python数据分析基础视频08-python中的数据透视表df.pivot_table()
本系列课程适用人群:
python零基础数据分析的朋友;
在校学生;
职场中经常要处理各种数据表格,或大量数据(十万级以上)的朋友;
喜欢图表可视化的朋友;
系列视频目前可在B站观看,会定期更新,欢迎大家吐槽!
本节概要:看excel中最强大的数据透视表在python中如何实现
视频地址:python中数据透视表
本节代码:
import pandas as pdimport numpy as npimport osos.chdir('D:/python/课件/data/gaokaodata/')# =============================================================================# 批量读取数据# =============================================================================# 此数据由和鲸社区整理:https://www.kesci.com/mw/project/5efff5de63975d002c98fc28/dataset# 获取文件夹相关信息,os.walk()方法返回3个结果,其中files最终要。root, dirs, files只是自定义的变量名称,可写成别的名for root, dirs, files in os.walk('.'): print(files) # 定义一个空的dataframe,读取的每个表中的数据都添加到此变量中 data = pd.DataFrame() for i in files: # 依次读取files文件中的元素 # 读取第i个文件,"."为上面设置的默认路径,i为文件名称。组合在一起正好为文件路径 datai = pd.read_csv('./' i) # 计算文件行数 datai_len = len(datai) # 读取的文件添加到data变量中 data = data.append(datai) # 添加到总的数据中 # print中格式化写法。%i表示此处为一整数,整数的值为引号外面%后面的变量,按顺序获取。其他写法 %s:字符串 %f:小数 print('文件%i列, 读取%i行数据,名称:%s'%(len(datai.columns),datai_len,i)) # =============================================================================# 数据透视表# ============================================================================='''pivot_table(values=None, # 计算的统计量,values可以不用写 index=None, # 行变量 columns=None, # 列字典 aggfunc='mean', #计算的统计量,可以写成 'sum' 或者 np.sum 两种形式 fill_value=None, # 缺失值的显示方式 margins=False, # 是否显示合计行、合计列,False为不显示 dropna=True, # 不计算全部为缺失值的列,不常用 margins_name='All', # 合计行、列的名称,默认为英文单词ALL,可改为"合计","总计"等 observed=False) # 仅适用于分类索引的,不常用'''# 在spyder中查函数的帮助文件 ★★★★★help(data.pivot_table) # pivot_table后面没有括号# 每个地区的分数线result1 = data.pivot_table('分数线', index='地区', aggfunc='mean').sort_values(by='分数线',ascending=False)# 每个地区,不同年份的分数线result2 = data.pivot_table('分数线', index='地区', columns='年份', aggfunc='mean', margins=True).round(0)# 不同地区,不同考生类别、不同年份的分数线result3 = data.pivot_table('分数线', index=['地区','考生类别'], columns='年份', fill_value=None, aggfunc='mean', margins=True).round(0)# 对同一变量计算多个统计量result4 = data.pivot_table('分数线', index='地区', aggfunc=['mean','max','min','std']).round(0)# 对不同的变量计算不同的统计量result5 = data.pivot_table(index='地区', aggfunc={'分数线':np.mean, '批次':'count'}).round(0)# =============================================================================# 导入excel# =============================================================================result3.to_excel('D:/python/课件/结果/高考成绩.xlsx')
赞 (0)