对比数字列/非数字列对dataframe的describe方法输出的影响
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文还是对dataframe
的describe
方法进行稍稍深入的探讨,上一篇文章里面,用例是鸢尾花数据集,里面的数据全部是数字。这导致了describe
的结果是以数字为描述主体的,列出了mean
/std
/min
/max
等。那么,对于另外的常见的字符串类型数据来说,这些描述字段显示是不合适的。
苏南大叔的程序如此灵动博客,记录苏南大叔的代码所学所想。测试环境:win10
,python@3.11.0
。本文对于存在数字类型/字符串列的dataframe
类型数据的describe
情况进行对比探讨。
纯数字列的dataframe
在上一篇文章里面,描述的就是纯数字类型的dataframe
,它的.describe()
方法返回的字段是对其数据的统计。参考文章:
字段返回值 | 说明 |
---|---|
count | 计数 |
mean | 平均值 |
std | 总体标准差 |
min | 最小值 |
max | 最大值 |
25% | 分位数Q1 |
50% | 分位数Q2(中位数) |
75% | 分位数Q3 |
测试代码:
import pandas as pd
data = pd.DataFrame({ "age": [5, 3, 6, 8, 10] })
print(data.describe())
输出:
age
count 5.000000
mean 6.400000
std 2.701851
min 3.000000
25% 5.000000
50% 6.000000
75% 8.000000
max 10.000000
纯字符串列的dataframe
对于纯字符串类型的dataframe
,统计的角度则有所变化:
字段返回值 | 说明 |
---|---|
count | 计数 |
unique | 唯一值计数 |
top | 排第一的值 |
freq | 排第一的值出现了几次 |
测试代码:
import pandas as pd
data = pd.DataFrame({
"name": ["虎子", "老许", "二赖子", "老白", "虎子"],
"category": ["dog", "cat", "dog", "cat", "dog"]
})
print(data.describe())
输出:
name category
count 5 5
unique 4 2
top 虎子 dog
freq 2 3
同时存在数字列和非数字列的dataframe
对于上面两者的混合体,是怎么进行统计的呢?结果有些出乎意料。答案是:仅对数字类型的列进行了统计,完全忽略了非数字列。
测试代码:
import pandas as pd
data = pd.DataFrame({
"name": ["虎子", "老许", "二赖子", "老白", "虎子"],
"category": ["dog", "cat", "dog", "cat", "dog"],
"age": [5, 3, 6, 8, 10]
})
print(data.describe())
使用include
参数对数据进行筛选
可以使用include
参数强制对上述系统行为进行逆天改命,但是修改的结果也不咋地。
测试代码:
import pandas as pd
import numpy as np
data = pd.DataFrame({
"name": ["虎子", "老许", "二赖子", "老白", "虎子"],
"category": ["dog", "cat", "dog", "cat", "dog"],
"age": [5, 3, 6, 8, 10]
})
print( data.describe() )
print( data.describe(include=[np.number]) ) # 这条没有意义,因为本来就是默认效果
print( data.describe(include=[object]) ) # 强制统计字符串
print( data.describe(include='all') ) # 两者的混合体,无语
相关文章
结束语
本文的结论是:虽然.describe()
主要统计的是数字类型的数据,但是也可以勉为其难的对于字符串类型的数据也可以进行统计。更多python
相关经验文章,可以参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。