python下用pandas实现数据统计--groupby分组

2025-10-25 20:33:14

1、groupby广泛用在数据统计之中,可以实现很多数据库函数的功能。

本文仅从单列分组,两列分组 , 求和 求平均 和 describe 时间分组还有筛选 ,六个方面例子进行说明。

数据初始化代码:

import pandas as pd

import  numpy as np

import os

import sys

exampleData = {'电源': ['220v', '110v', '28v', '5v', '3v'],         

'电阻': ['100', '100', '100', '1M', '2.2K'],         

'厂家': ['A厂', 'B厂', 'A厂', 'B厂', 'C厂' ],         

'数量': [5, 20, 14, 15, 20]}

df = pd.DataFrame(exampleData)

print(df)

python下用pandas实现数据统计--groupby分组

python下用pandas实现数据统计--groupby分组

2、#按厂家分组,并统计个数

print("------数据分组统计个数-----")

groupnum = df.groupby(['厂家']).size()

print(groupnum)

#打印每组数据 这个很有用

print("------数据分组-----")

for groupname,grouplist in df.groupby('厂家'):

    print(groupname)

    print(grouplist)

python下用pandas实现数据统计--groupby分组

3、# 求平均#将数量转换成浮点型,然后分组求均值print("------数据分组求平均-----")groupmean = df['数量'].astype(float).groupby(df['厂家']).mean()print(groupmean, type(groupmean))# 求和#将数量转换成浮点型,然后分组求和print("------数据分组求和-----")groupsum = df['数量'].astype(float).groupby(df['厂家']).sum()print(groupsum, type(groupsum))

python下用pandas实现数据统计--groupby分组

4、#追加列

print("------追加列-----")

df['地点'] = ['上海','北京',"大陆",'台湾','广州']

df['日期'] = ['2019-03-11','2019-03-16',"2019-03-16",'2019-03-16','2019-03-15']

print(df)

print("------多 列 数据分组统计个数-----")

groupnum = df.groupby(['厂家','电阻']).size()

print(groupnum)

python下用pandas实现数据统计--groupby分组

5、# 按厂家与电阻分组,求数量这一列均值

print("------按厂家与电阻分组,求数量这一列均值--")

groupmean = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).mean()

print(groupmean)

# 按厂家与电阻分组,求数量这一列sum

print("------按厂家与电阻分组,求数量这一列sum--")

groupsum = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).sum()

print(groupsum)

print("------按厂家与电阻分组,求数量这一列describe--")

groupdescribe = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).describe()

print(groupdescribe)

python下用pandas实现数据统计--groupby分组

6、print("------按厂家 分组,日期这一列count--")

# 转化为时间格式

df["新日期"] = pd.to_datetime(df["日期"],format ="%Y-%m-%d")

print(df)

groupcount = df.groupby([df['新日期']]).count()

print(groupcount)

groupnum = df.groupby(['新日期']).size()

print(groupnum)

# 按照年分组

print(df.groupby(df["新日期"].apply(lambda i:i.year)).count())

python下用pandas实现数据统计--groupby分组

7、# 到这里是按月分组

new_df = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False)

print(new_df)

print("------数据分组-----")

for groupname,grouplist in new_df:

    print(groupname)

    print(grouplist)

#打印按天 并且筛选数据只有一个的

newdf = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False).filter(lambda i: len(i)==1)

print(newdf)

#打印按天 并且筛选数据大于一个的

newdf = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False).filter(lambda i: len(i) > 1)

print(newdf)

python下用pandas实现数据统计--groupby分组

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢