数据统计与数据分组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
相关推荐
神奇夜光杯13 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
写代码的小阿帆2 天前
深度学习—Pandas标签库基础
深度学习·pandas
我就说好玩2 天前
2020年美国总统大选数据分析与模型预测
大数据·python·数据挖掘·数据分析·pandas·sklearn
神奇夜光杯2 天前
Python酷库之旅-第三方库Pandas(200)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
立黄昏粥可温2 天前
Python 从入门到实战44(Pandas读写数据)
开发语言·python·pandas
python1563 天前
Python Pandas内存管理技巧助力高效处理大数据
大数据·python·pandas
Python大数据分析@3 天前
学习python中的pandas有没有好的教程推荐?
python·学习·pandas
FreedomLeo13 天前
Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
python·数据分析·numpy·pandas·categoricals·数据分类分析·建模和机器学习
Cachel wood5 天前
Django3 + Vue.js 前后端分离书籍添加项目Web开发实战
开发语言·前端·vue.js·python·数据分析·sqlite·pandas
Kalika0-05 天前
Pandas DataFrame学习
pytorch·学习·pandas