数据统计与数据分组18-25题(30 天 Pandas 挑战)

数据统计与数据分组

  • [1. 知识点](#1. 知识点)
    • [1.18 分箱与统计个数](#1.18 分箱与统计个数)
    • [1.19 分组与求和统计](#1.19 分组与求和统计)
    • [1.20 分组获取最小值](#1.20 分组获取最小值)
    • [1.21 分组获取值个数](#1.21 分组获取值个数)
    • [1.22 分组与条件查询](#1.22 分组与条件查询)
    • [1.23 分组与条件查询及获取最大值](#1.23 分组与条件查询及获取最大值)
    • [1.24 分组及自定义函数](#1.24 分组及自定义函数)
    • [1.25 分组+lambda函数统计](#1.25 分组+lambda函数统计)
  • [2. 题目](#2. 题目)
    • [2.18 按分类统计薪水(数据统计)](#2.18 按分类统计薪水(数据统计))
    • [2.19 查找每个员工花费的总时间(数据分组)](#2.19 查找每个员工花费的总时间(数据分组))
    • [2.20 游戏玩法分析 I(数据分组)](#2.20 游戏玩法分析 I(数据分组))
    • [2.21 每位教师所教授的科目种类的数量(数据分组)](#2.21 每位教师所教授的科目种类的数量(数据分组))
    • [2.22 超过5名学生的课(数据分组)](#2.22 超过5名学生的课(数据分组))
    • [2.23 订单最多的客户(数据分组)](#2.23 订单最多的客户(数据分组))
    • [2.24 按日期分组销售产品(数据分组)](#2.24 按日期分组销售产品(数据分组))
    • [2.25 每天的领导和合伙人(数据分组)](#2.25 每天的领导和合伙人(数据分组))

1. 知识点

1.18 分箱与统计个数

  • 分箱操作

    python 复制代码
    # float('inf')正无穷
    bins=[0,20000,50001,float('inf')]
    labels=['Low Salary', 'Average Salary', 'High Salary']
    accounts['category']=pd.cut(accounts['income'],bins=bins,labels=labels,right=False)
  • 数值统计

    python 复制代码
    accounts_new=accounts['category'].value_counts().reset_index()

1.19 分组与求和统计

  • 分组统计

    python 复制代码
    employees=employees.groupby(['event_day','emp_id']).agg({'total_time':'sum'}).reset_index()
  • 多种数值统计

    python 复制代码
    employees=employees.groupby(['event_day','emp_id']).agg(
    total_add=('total_time','sum'),
    total_mean=('total_time','mean')
    ).reset_index()

1.20 分组获取最小值

  • 分组获取最小值

    python 复制代码
    activity=activity.groupby('player_id').agg(first_login=('event_date','min')).reset_index()

1.21 分组获取值个数

  • 分组获取最小值

    python 复制代码
    teacher=teacher.groupby('teacher_id').agg(cnt=('subject_id','count')).reset_index()

1.22 分组与条件查询

python 复制代码
courses=courses.groupby('class').agg(counts=('student','count')).reset_index() # 分组
courses=courses.query('`counts`>5')[['class']] # 条件查询

1.23 分组与条件查询及获取最大值

  • 分组统计

    python 复制代码
    orders=orders.groupby('customer_number').agg(counts=('order_number','count')).reset_index()
  • 最大值

    python 复制代码
    max_orders=orders['counts'].max()
  • 条件查询

    python 复制代码
    results=orders.query(f'`counts`=={max_orders}')[['customer_number']]

1.24 分组及自定义函数

python 复制代码
def get_join(x):
        x_list=sorted(list(set(x)))
        return ','.join(x_list)
    def get_count(x):
        x_list=set(x)
        return len(x_list)
    activities=activities.groupby(['sell_date']).agg(num_sold=('product',get_count),products=('product',get_join)).reset_index()

1.25 分组+lambda函数统计

python 复制代码
daily_sales=daily_sales.groupby(['date_id','make_name']).agg(
        unique_leads=('lead_id',lambda x:len(set(x))),
        unique_partners=('partner_id',lambda x:len(set(x)))
        ).reset_index()

2. 题目

2.18 按分类统计薪水(数据统计)


python 复制代码
import pandas as pd

def count_salary_categories(accounts: pd.DataFrame) -> pd.DataFrame:
    # float('inf')
    bins=[0,20000,50001,float('inf')]
    labels=['Low Salary', 'Average Salary', 'High Salary']
    accounts['category']=pd.cut(accounts['income'],bins=bins,labels=labels,right=False)
    accounts_new=accounts['category'].value_counts().reset_index()
    accounts_new=accounts_new.rename(columns={'count':'accounts_count'})
    accounts_new=accounts_new.sort_values('category',ascending=False)
    return accounts_new

2.19 查找每个员工花费的总时间(数据分组)


python 复制代码
import pandas as pd

def total_time(employees: pd.DataFrame) -> pd.DataFrame:
	# pandas流
    employees=employees.assign(total_time = employees.out_time-employees.in_time).groupby(['event_day','emp_id']).agg({'total_time':'sum'}).reset_index().rename(columns = {'event_day':'day'})
    # employees['total_time']=employees['out_time']-employees['in_time']
    # employees=employees.groupby(['event_day','emp_id'])['total_time'].sum().reset_index()
    # employees=employees.rename(columns={'event_day':'day'})
    # employees.sort_values('emp_id',inplace=True)
    return employees

2.20 游戏玩法分析 I(数据分组)


python 复制代码
import pandas as pd

def game_analysis(activity: pd.DataFrame) -> pd.DataFrame:
    activity=activity.groupby('player_id').agg(first_login=('event_date','min')).reset_index()
    return activity

2.21 每位教师所教授的科目种类的数量(数据分组)


python 复制代码
import pandas as pd

def count_unique_subjects(teacher: pd.DataFrame) -> pd.DataFrame:
    teacher.drop_duplicates(['teacher_id','subject_id'],inplace=True)
    teacher=teacher.groupby('teacher_id').agg(cnt=('subject_id','count')).reset_index()
    return teacher

2.22 超过5名学生的课(数据分组)



python 复制代码
import pandas as pd

def find_classes(courses: pd.DataFrame) -> pd.DataFrame:
    courses=courses.groupby('class').agg(counts=('student','count')).reset_index()
    return courses.query('`counts`>5')[['class']]

2.23 订单最多的客户(数据分组)


python 复制代码
import pandas as pd

def largest_orders(orders: pd.DataFrame) -> pd.DataFrame:
    orders=orders.groupby('customer_number').agg(counts=('order_number','count')).reset_index()
    max_orders=orders['counts'].max()
    results=orders.query(f'`counts`=={max_orders}')[['customer_number']]
    return results

2.24 按日期分组销售产品(数据分组)


python 复制代码
import pandas as pd

def categorize_products(activities: pd.DataFrame) -> pd.DataFrame:
    activities=activities.groupby(['sell_date']).agg(
        num_sold=('product',lambda x:len(set(x))),
        products=('product',lambda x:','.join(sorted(list(set(x)))))
        ).reset_index()
    return activities
    

2.25 每天的领导和合伙人(数据分组)



python 复制代码
import pandas as pd

def daily_leads_and_partners(daily_sales: pd.DataFrame) -> pd.DataFrame:
    daily_sales=daily_sales.groupby(['date_id','make_name']).agg(
        unique_leads=('lead_id',lambda x:len(set(x))),
        unique_partners=('partner_id',lambda x:len(set(x)))
        ).reset_index()
    return daily_sales
相关推荐
东方佑5 小时前
pandas df 如何 输出数据到 sqlite3
oracle·sqlite·pandas
liuweidong08021 天前
【Pandas】pandas Series flags
pandas
Lx3522 天前
Pandas数据重命名:列名与索引为标题
后端·python·pandas
壹屋安源5 天前
自动生成发票数据并存入Excel
python·excel·pandas·random·datetime·faker
Dream25125 天前
【数据分析之pandas】
数据挖掘·数据分析·pandas
Mobius80866 天前
探索 Seaborn Palette 的奥秘:为数据可视化增色添彩
图像处理·python·信息可视化·数据分析·pandas·matplotlib·数据可视化
赛丽曼8 天前
Pandas
人工智能·python·pandas
道友老李9 天前
【机器学习】数据分析之Pandas(一)
人工智能·python·机器学习·数据分析·pandas
无形忍者9 天前
Pandas系列|第一期:列值的前N码模糊匹配
linux·运维·pandas
code04号10 天前
df = pd.DataFrame(data)中的data可以是什么类型的数据?
python·pandas