pandas 是基于numpy构建的含有更高级数据结构和工具的数据分析包,提供了高效地操作大型数据集所需的工具。pandas有两个核心数据结构 Series和DataFrame,分别对应了一维的序列和二维的表结构。而describe()函数就是返回这两个核心数据结构的统计变量。其目的在于观察这一系列数据的范围、大小、波动趋势等等,为后面的模型选择打下基础。
pandas.DataFrame.describe 的官方文档。
DataFrame.describe(percentiles=None, include=None, exclude=None) # return: Series or DataFrame. Summary statistics of the Series or Dataframe provided.
它有三个参数:
- percentiles :这个参数可以设定数值型特征的统计量,默认是[.25, .5, .75],也就是返回25%,50%,75%数据量时的数字,但是这个可以修改的
- include:这个参数默认是只计算数值型特征的统计量,当输入include=[‘O’],会计算离散型变量的统计特征;
- exclude:你可以指定不选哪些,人性化设计。这个参数默认不丢弃任何列,相当于无影响。
2. 使用举例 2.1 使用一个series数据进行分析 连续值
def describe_series():
int_data = pd.Series([1, 2, 3, 4])
print(int_data.describe())
结果:
count 4.000000 mean 2.500000 std 1.290994 min 1.000000 25% 1.750000 50% 2.500000 75% 3.250000 max 4.000000
这里由于我们的int_data是一个连续值,所以我们得到的结果得格式就是:
- count:每一列非空值的数量
- mean: 每一列的平均值
- std:每一列的标准差
- min:最小值
- 25%:25%分位数,排序之后排在25%位置的数
- 50%:50%分位数
- 75%:75%分位数
- max:最大值
def describe_series():
string_data = pd.Series(['a', 'd', 'r', 't'])
print(string_data.describe())
结果:
count 4 unique 4 top a freq 1
这里由于我们的string_data是一个离散值,所以我们得到的结果得格式就是:
- unique:不重复的离散值数目,去重之后的个数
- top: 出现次数最多的离散值
- freq: 上述的top出现的次数
def describe_dataframe():
dataframe_data = pd.DataFrame({'name': pd.Categorical(['agou', 'ahua', 'amao']), 'age': [10, 20, 30], 'address': ['CN', 'USB', 'UK']})
print(dataframe_data)
# include='all',代表对所有列进行统计,如果不加这个参数,则只对数值列进行统计
desc = dataframe_data.describe(include='all')
print(desc)
结果:
name age address
0 agou 10 CN
1 ahua 20 USB
2 amao 30 UK
name age address
count 3 3.0 3
unique 3 NaN 3
top agou NaN CN
freq 1 NaN 1
mean NaN 20.0 NaN
std NaN 10.0 NaN
min NaN 10.0 NaN
25% NaN 15.0 NaN
50% NaN 20.0 NaN
75% NaN 25.0 NaN
max NaN 30.0 NaN
缺失值由NaN补上,如果为NaN,说明此列的信息不可以用这个统计变量进行统计的。注意,数值列和字母列是不一样的。



