第十三节 pandas分组和分组统计以及多数据源合并

import pandas as pd
pd.options.display.max_rows = 10  # 设置显示行数

df1 = pd.read_csv(r'E:\anacondatest\PythonData\高校信息.csv', encoding='gbk', index_col='学校名称')

# 数据拆分,生成的是分组索引标记,而不是新的DF
df2g = df1.groupby('类型')
# print(df1g.groups)  # 查看分类详情
# print(df1g.describe())  # 查看简单的数据统计描述,均值,最大值,最小值,标准差等等
df3g = df1.groupby(['类型', '所在省份'])
print(df3g.mean())  # 对分类后的数据进行平均数统计
'''
           名次     总分
类型 所在省份             
农林 北京    60.0  65.92
   广东    95.0  63.64
   江苏    46.0  65.90
   湖北    49.0  65.77
'''

df2g.get_group('农林').mean()
df3g['名次'].max()

# 分组汇总
df3g.agg('count')
df3g.agg('size')
df3g.agg('sum', 'median')
df3g.agg('std')
df3g.agg('max')

# 长型和宽型数据转换
df3 = pd.read_excel(r'E:\anacondatest\PythonData\儿童生长研究.xlsx', index_col=[0, 2])
df3s = df3.stack()

# 长宽型格式自由转换
df3s.unstack([1, 2])

# 数据转置
print(df3.T)

# 数据纵向合并,如果合并多个,束脚裤放在列表里
df4 = df1.append(df3, ignore_index=False, verify_integrity=False)  # 要注意索引值是否会重复,ignore_index添加时忽略索引,verify_integrity是否检查索引唯一性
df5 = df1.append([df3, df3])

# 数据的横向合并
pd.merge(df3, df3)

 

posted @ 2020-03-24 23:55  kog_maw  阅读(465)  评论(0编辑  收藏  举报