我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文还是对dataframedescribe方法进行稍稍深入的探讨,上一篇文章里面,用例是鸢尾花数据集,里面的数据全部是数字。这导致了describe的结果是以数字为描述主体的,列出了mean/std/min/max等。那么,对于另外的常见的字符串类型数据来说,这些描述字段显示是不合适的。

苏南大叔:对比数字列/非数字列对dataframe的describe方法输出的影响 - describe方法的影响
对比数字列/非数字列对dataframe的describe方法输出的影响(图5-1)

苏南大叔的程序如此灵动博客,记录苏南大叔的代码所学所想。测试环境:win10python@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())

苏南大叔:对比数字列/非数字列对dataframe的describe方法输出的影响 - 处理数字类型
对比数字列/非数字列对dataframe的describe方法输出的影响(图5-2)

输出:

             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())

苏南大叔:对比数字列/非数字列对dataframe的describe方法输出的影响 - 处理字符串类型
对比数字列/非数字列对dataframe的describe方法输出的影响(图5-3)

输出:

       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())

苏南大叔:对比数字列/非数字列对dataframe的describe方法输出的影响 - 意料之外
对比数字列/非数字列对dataframe的describe方法输出的影响(图5-4)

使用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') )        # 两者的混合体,无语

苏南大叔:对比数字列/非数字列对dataframe的describe方法输出的影响 - describe-include
对比数字列/非数字列对dataframe的describe方法输出的影响(图5-5)

相关文章

结束语

本文的结论是:虽然.describe()主要统计的是数字类型的数据,但是也可以勉为其难的对于字符串类型的数据也可以进行统计。更多python相关经验文章,可以参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python