Hướng dẫn python json group by count - nhóm python json theo số lượng

Sử dụng phần này trong câu trả lời của Rob cho thiết lập:

from json import loads, dumps
from collectins import defaultdict

json_string = """
[
    {"name": "xyz", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3},
    {"name": "qrs", "territory": "def", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3},
    {"name": "tuv", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3},
    {"name": "abc", "territory": "abc", "parameter_a": 1, "parameter_b": 2, "parameter_c": 3}
]"""

# Step 1: convert from JSON to Python:
python_object = loads(json_string)

Bạn có thể tạo một từ điển lãnh thổ và sau đó cập nhật đối tượng của mình:

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))

Những bài viết liên quan

Sum Pandas DataFrame Cột với các ví dụ

DataFrame trống Pandas với các loại cột cụ thể

Chọn các hàng DataFrame Pandas giữa hai ngày


# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))

Pandas chuyển đổi nhiều cột thành loại DateTime


# Create a pandas DataFrame.
import pandas as pd
technologies   = ({
    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],
    'Duration':['30days','50days','35days','40days','60days','35days','55days','50days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]
                })
df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])
print(df)

Năng suất dưới đầu ra.


   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   35days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600

Đổi tên các giá trị chỉ mục của Pandas DataFrame

Người giới thiệu


# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()
print(df2)

Năng suất dưới đầu ra.


Courses
Hadoop     2
Pandas     1
PySpark    1
Python     2
Spark      2
Name: Courses, dtype: int64

Bạn có thể sử dụng gandas dataFrame.groupBy (). Count () cho các cột nhóm và tính toán tổng hợp đếm hoặc kích thước, điều này & nbsp; tính toán số lượng hàng cho mỗi kết hợp nhóm.

Bạn cũng có thể gửi một danh sách các cột bạn muốn nhóm đến GroupBy (), sử dụng điều này, bạn có thể áp dụng một nhóm trên nhiều cột và tính toán số lượng trên mỗi nhóm kết hợp. Ví dụ: & nbsp; ________ 30 & nbsp; không nhóm trên & nbsp; ________ 24 & nbsp; và & nbsp; ____ ____ 26 & nbsp; cột và cuối cùng tính toán số lượng.


# Using groupby() & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()
print(df2)

Năng suất dưới đầu ra.


Courses  Duration
Hadoop   35days      2
Pandas   60days      1
PySpark  50days      1
Python   40days      1
         50days      1
Spark    30days      1
         55days      1
Name: Fee, dtype: int64

4. Sắp xếp sau nhóm và đếm

Đôi khi bạn sẽ được yêu cầu thực hiện một loại (giảm dần hoặc giảm dần) sau khi thực hiện nhóm và đếm. Bạn có thể đạt được điều này bằng cách sử dụng ví dụ dưới đây.

Lưu ý rằng theo mặc định theo nhóm theo kết quả theo các loại theo khóa nhóm do đó sẽ mất thêm thời gian, nếu bạn có vấn đề về hiệu suất và không muốn sắp xếp nhóm theo kết quả, bạn có thể tắt điều này bằng cách sử dụng param


# Create a pandas DataFrame.
import pandas as pd
technologies   = ({
    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],
    'Duration':['30days','50days','35days','40days','60days','35days','55days','50days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]
                })
df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])
print(df)
3.


# Sorting after groupby() & count()
# Sorting group keys on descending order
groupedDF = df.groupby('Courses',sort=False).count()
sortedDF=groupedDF.sort_values('Courses', ascending=False)['Fee']
print(sortedDF)

Năng suất dưới đầu ra.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
0

5. Sử dụng groupby () với kích thước ()

Ngoài ra, bạn cũng có thể sử dụng kích thước () để có được số lượng hàng cho mỗi nhóm. Bạn có thể sử dụng


# Create a pandas DataFrame.
import pandas as pd
technologies   = ({
    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],
    'Duration':['30days','50days','35days','40days','60days','35days','55days','50days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]
                })
df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])
print(df)
4 để có tổng số phần tử cho mỗi nhóm

# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
4 và

# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
6. cột

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
1

Mang lại đầu ra giống như trên.

Sử dụng


# Create a pandas DataFrame.
import pandas as pd
technologies   = ({
    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],
    'Duration':['30days','50days','35days','40days','60days','35days','55days','50days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]
                })
df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])
print(df)
7 để chỉ định mức nào bạn muốn làm đầu ra. Lưu ý rằng cấp độ bắt đầu từ 0.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
2

Năng suất dưới đầu ra.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
3

Sau đó sử dụng ____38 để gán tên cho cột đếm.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
4

Năng suất dưới đầu ra.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
5

6. Pandas Groupby () và sử dụng AGG (‘Đếm,)

Ngoài ra, bạn cũng có thể nhận được số lượng nhóm bằng cách sử dụng hàm


# Create a pandas DataFrame.
import pandas as pd
technologies   = ({
    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],
    'Duration':['30days','50days','35days','40days','60days','35days','55days','50days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]
                })
df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])
print(df)
9 hoặc tổng hợp () và chuyển hàm đếm tổng hợp dưới dạng param. Hàm reset_index () được sử dụng để đặt chỉ mục trên dataFrame. Bằng cách sử dụng phương pháp này, bạn có thể tính toán nhiều tập hợp.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
6

Năng suất dưới đầu ra.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
7

7. Sử dụng dataFrame.transform ()

Bạn có thể sử dụng


   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   35days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600
0 để thêm một cột mới chứa các nhóm

   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   35days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600
1 vào DataFrame.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
8

Năng suất dưới đầu ra.

territories = defaultdict(list)

for i, item in enumerate(python_object):
    territories[item['territory']].append(i)

for item in python_object:
    item['parameter_d'] = territories[item['territory']]

print(dumps(python_object, indent=2))
9

8. Các ví dụ khác

Bây giờ, hãy để Lừa xem cách sắp xếp các hàng từ kết quả của Groupby và thả các hàng trùng lặp từ Pandas DataFrame.


# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
0

Năng suất dưới đầu ra.


# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
1

9. Ví dụ hoàn chỉnh về nhóm và đếm


# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
2

Sự kết luận

Trong bài viết này, bạn đã học được cách nhóm đơn và nhiều cột và nhận số lượng các hàng từ gấu trúc DataFrame bằng DataFrame.groupby (),


   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   35days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600
2,

# Below are quick examples

# Using groupby() and count()
df2 = df.groupby(['Courses'])['Courses'].count()

# Using GroupBy & count() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].count()

# Using GroupBy & size() on multiple column
df2 = df.groupby(['Courses','Duration'])['Fee'].size()

# using DataFrame.size() and max()
df2 = df.groupby(['Courses','Duration']).size().groupby(level=0).max() 

# Use size().reset_index() method
df2 = df.groupby(['Courses','Duration']).size().reset_index(name='counts')

# Using pandas DataFrame.reset_index()
df2 = df.groupby(['Courses','Duration'])['Fee'].agg('count').reset_index()

# Using DataFrame.transform()
df2 = df.groupby(['Courses','Duration']).Courses.transform('count')

# Use DataFrame.groupby() and Size() 
print(df.groupby(['Discount','Duration']).size() 
   .sort_values(ascending=False) 
   .reset_index(name='count') 
   .drop_duplicates(subset='Duration'))
8 và

   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   35days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600
4 với các ví dụ.

Học hỏi hạnh phúc !!

Những bài viết liên quan

  • Sum Pandas DataFrame Cột với các ví dụ
  • DataFrame trống Pandas với các loại cột cụ thể
  • Chọn các hàng DataFrame Pandas giữa hai ngày
  • Pandas chuyển đổi nhiều cột thành loại DateTime
  • Đổi tên các giá trị chỉ mục của Pandas DataFrame

Người giới thiệu

  • https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.GroupBy.mean.html