Python数据分析和数据处理库Pandas(透视表)
目录一.什么是透视表二.pivot_table()三.案例睡眠质量分析透视表1.统计不同睡眠时间不同压力等级下的睡眠质量2.添加职业作为列维度3.添加性别作为第二个列维度一.什么是透视表透视表pivot table是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它可以根据多个行分组键和多个列分组键对数据进行聚合并根据行和列上的分组键将数据分配到各个矩形区域中。二.pivot_table()参数说明values待聚合的列默认聚合所有数值列。index用作透视表行索引的列。即通过哪个些行来对数据进行分组行索引决定了透视表的行维度。columns用作透视表列索引的列。即通过哪个些列来对数据进行分组列索引决定了透视表的列维度。aggfunc聚合函数或函数列表默认为mean。fill_value用于替换结果表中的缺失值。margins是否在透视表的边缘添加汇总行和列显示总计。默认值是 False如果设置为 True会添加“总计”行和列方便查看数据的总体汇总。dropna是否排除包含缺失值的行和列。默认为 True即如果某个组合的行列数据中包含缺失值则会被排除在外。如果设置为 False则会保留这些含有缺失值的行和列。observerd是否显示所有组合数据True:只显示实际存在的组合下面通过一个案例来学习和理解这些参数。三.案例睡眠质量分析透视表使用sleep睡眠健康和生活方式数据集其中包含13个字段person_id每个人的唯一标识符。gender个人的性别男/女。age个人的年龄以岁为单位。occupation个人的职业或就业状况例如办公室职员、体力劳动者、学生。sleep_duration每天的睡眠总小时数。sleep_quality睡眠质量的主观评分范围从 1差到 10极好。physical_activity_level每天花费在体力活动上的时间以分钟为单位。stress_level压力水平的主观评级范围从 1低到 10高。bmi_category个人的 BMI 分类体重过轻、正常、超重、肥胖。blood_pressure血压测量显示为收缩压与舒张压的数值。heart_rate静息心率以每分钟心跳次数为单位。daily_steps个人每天行走的步数。sleep_disorder存在睡眠障碍无、失眠、睡眠呼吸暂停。1.统计不同睡眠时间不同压力等级下的睡眠质量import pandas as pd df pd.read_csv(data/sleep.csv) # 对睡眠时间进行划分 sleep_duration_stage pd.cut(df[sleep_duration], [0, 5, 6, 7, 8, 9, 10, 11, 12]) # 对压力等级进行划分 stress_level_stage pd.cut(df[stress_level], 4) print(df.pivot_table(valuessleep_quality, index[sleep_duration_stage, stress_level_stage], aggfuncmean))运行结果2.添加职业作为列维度import pandas as pd df pd.read_csv(data/sleep.csv) # 对睡眠时间进行划分 sleep_duration_stage pd.cut(df[sleep_duration], [0, 5, 6, 7, 8, 9, 10, 11, 12]) # 对压力等级进行划分 stress_level_stage pd.cut(df[stress_level], 4) print(df.pivot_table(valuessleep_quality, index[sleep_duration_stage, stress_level_stage], columns[occupation], aggfuncmean))运行结果3.添加性别作为第二个列维度import pandas as pd df pd.read_csv(data/sleep.csv) # 对睡眠时间进行划分 sleep_duration_stage pd.cut(df[sleep_duration], [0, 5, 6, 7, 8, 9, 10, 11, 12]) # 对压力等级进行划分 stress_level_stage pd.cut(df[stress_level], 4) print(df.pivot_table(valuessleep_quality, index[sleep_duration_stage, stress_level_stage], columns[occupation, gender], aggfuncmean))运行结果