一、分组使用聚合函数做数据统计
1、单个列groupby,查询所有数据列的统计
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
print(df)
a = df.groupby("A").sum()
print(a)
我们看到:
- groupby中的'A'变成了数据的索引列
-
因为要统计sum,但B列不是数字,所以被自动忽略掉
2、多个列groupby,查询所有数据列的统计
b = df.groupby(["A","B"]).mean()
print(b)
a = df.groupby(["A","B"],as_index = False).sum()
print(a)
3、同时查看多种数据统计
c = df.groupby("A").agg([np.sum,np.mean,np.std])
print(c)
4、查看单列的结果数据统计
#性能好
d = df.groupby("A")["C"].agg([np.sum, np.mean, np.std])
print(d)
5、不同列使用不同的聚合函数
d = df.groupby("A").agg({"C":np.sum,"D":np.mean})
print(d)
二、遍历groupby的结果理解执行流程
1、便利分组数据,查看运行逻辑
g = df.groupby("A")
for name,group in g:
print(name)
print(group)
2、获取单个分组的数据
#参数为对应的分组名
h = g.get_group("bar")
print(h)
3、遍历多个列组合的分组
g = df.groupby(["A","B"])
for name,group in g:
print(name)
print(group)
4、获取多个列组合分组的某一组
h = g.get_group(('bar', 'one'))
print(h)
5、直接查询gropu后的某列,生成Series或者子Dataframe
e = g["C"]
print(e)
for name,group in g["C"]:
print(name)
print(group)
三、实例分组探索天气数据
1、数据准备
import pandas as pd
df = pd.read_csv("/Users/hathaway/PycharmProjects/untitled/MzTest/beijing_tianqi_2018.csv")
# df.set_index("ymd",inplace=True)
df.loc[:,"bWendu"] =df["bWendu"].str.replace("℃","").astype("int32")
df.loc[:,"yWendu"] =df["yWendu"].str.replace("℃","").astype("int32")
# print(df.head())
df["month"] = df["ymd"].str[:7]
print(df.head())
2、查看每个月的最高温度
data = df.groupby('month')['bWendu'].max()
print(data)
3、画图展示
import pandas as pd
import matplotlib.pyplot as plt #画图需要的包
import numpy as np
df = pd.read_csv("/Users/hathaway/PycharmProjects/untitled/MzTest/beijing_tianqi_2018.csv")
# df.set_index("ymd",inplace=True)
df.loc[:,"bWendu"] =df["bWendu"].str.replace("℃","").astype("int32")
df.loc[:,"yWendu"] =df["yWendu"].str.replace("℃","").astype("int32")
# print(df.head())
df["month"] = df["ymd"].str[:7]
# print(df.head())
data = df.groupby('month')['bWendu'].max()
data.plot() #画图的方法
plt.show() #pycharm需要添加这个方法就可以展示
4、查看每个月最高温度,最低温度,平均空气质量指数
group_data = df.groupby("month").agg({"bWendu":np.max,"yWendu":np.min,"aqi":np.mean})
print(group_data)
group_data.plot()
plt.show()