在用Python做数据处理时,我都会习惯性的使用describe()函数,因为小编最先接触到的是用R语言进行处理,R语言常用的几个统计函数包括summary()和describe(),其中R的summary()函数和Python的describe()函数的差不多,差不多需要的统计结果都能通过这个函数得出。这个时候,小编就有疑问,当数据含有缺失值时,进行平均值,中位数受缺失值的影响,平均值和中位数是否准确。R和Python官方介绍统计函数会忽视缺失值,下面是小编写的程序进行测试。
import seaborn as sns
import pandas as pd
import numpy as np
#去除指定列的空值,并统计该数据
#使用dropna(subset=列/列表)删除指定列函数
#然后使用describe进行统计,统计结果组成新的数据框
#由于describe()函数自带忽略空值,本次试验用于测试describe()是否与循环结果一致,去除了缺失值(空值)对统计结果的影响
def test_data():
planets = sns.load_dataset('planets')#读入数据
col = list(planets.columns)
#isinstance()函数不能直接判断对象类型数据,会导致判断不成功
#采用获取数据框类型数据,转换为字符串数据进行判断
for i in col:
if (str(planets[i].dtype) == 'object'): col.remove(i)
a = pd.DataFrame(columns=col) #新建一个空白数据框
for i in col:
a[i] = dropn(planets,i)
return a,planets
def dropn(planets,colname):
data = planets[colname].dropna()
a = data.describe()
return a
if __name__ == '__main__':
a,planets = test_data()
print('测试结果',a)
print('内置函数结果',planets.describe())
测试结果显示如下:
测试结果显示一致。