1.Pandas数据特征分析

数值变量的基本描述

df.describe(
 percentiles :需要输出的百分位数,列表格式提供,如[.25, .5,.75]
 include = 'None ':要求纳入分析的变量类型白名单 None (default):只纳入数值变量列A list-like of dtypes:列表格式提供希望纳入的类型all :全部纳入
exclude :要求剔除出分析的变量类型黑名单,选项同上
)
import pandas as pd
df = pd.read_excel('stu_data.xlsx')
# 1.获取数值变量的基本描述
df.describe(include='all')

python中交叉表查询怎么设置行列标题 python 交叉分析_python


分类变量的频数统计

Series.value_counts(
 normalize = False :是否返回构成比而不是原始频数
 sort = True :是否按照频数排序(否则按照原始顺序排列)
 ascending = False : 是否升序排列
 bins :对数值变量直接进行分段,可看作是 pd.cut 的筒便用法
 dropna = True :结果中是否包括 NaN
)
# 分类变量频数统计 value_counts()
# 按照软件分组(常规方法)
print('按照软件分组(常规方法)')
print(df.groupby('软件')['软件'].count())

print('使用value_counts')
print(df.软件.value_counts()) # 等同于df.value_counts(df.软件)

# normalize:按照比例输出 sort是否排序 默认True排序
print(df.软件.value_counts(normalize=True,sort=False))

# 按照分组的方式输出
pd.value_counts(df.体重,bins=10)

python中交叉表查询怎么设置行列标题 python 交叉分析_python_02

python中交叉表查询怎么设置行列标题 python 交叉分析_类变量_03

2.Pandas数据交叉表

pivot_table和crosstab如何选择:crosstab最适合计算频数,pivot_table适合计算多种value

df.pivot_table(
 行列设定 
index / columns :行变量/列变量,多个时以list 形式提供
单元格设定
values :在单元格中需要汇总的变量列,可不写
aggfunc = numpy.mean : 相应的汇总函数
汇总设定
margins = False :是否加入行列汇总
margins_name = 'All':汇总行/列的名称
缺失值处理
fill_value = None :用于替换缺失值的数值
pd.crosstab(
选项和 pivot_table 几乎相同
相对而言需要打更多字母,因此使用更麻烦
但是计算频数最方便
输出格式为数据框 )
import pandas as pd
df = pd.read_excel('stu_data.xlsx')
# pivot_table使用
# 单行分类
df.pivot_table(index='课程', aggfunc='mean') 

# 多行单列分类
df.pivot_table(index=['课程','性别'],columns='开设',aggfunc='sum')

# 多行单列分类后指定需要查看的数值
df.pivot_table(index=['课程','性别'],columns='开设',values=['身高','体重'])

python中交叉表查询怎么设置行列标题 python 交叉分析_数据分析_04


python中交叉表查询怎么设置行列标题 python 交叉分析_数据分析_05


python中交叉表查询怎么设置行列标题 python 交叉分析_数据分析_06

# crosstab
# 多行单列查看数值计数
pd.crosstab(index=[df.性别,df.课程],columns=df.开设)

# 查看平均值,必须指定value
pd.crosstab(index=[df.性别,df.课程],columns=df.开设,aggfunc='mean',values=df.身高)

python中交叉表查询怎么设置行列标题 python 交叉分析_类变量_07


python中交叉表查询怎么设置行列标题 python 交叉分析_缺失值_08