数据分析之数据处理(二)

33 篇文章 25 订阅
33 篇文章 19 订阅
本文介绍了如何使用Python的pandas库处理数据中的缺失值,通过创建数据、检查缺失值数量、绘制密度图来了解数据分布,并应用拉格朗日插值法进行填充。此外,还展示了设置字体和负数显示的方法,以及解决Series反向索引问题的技巧。
摘要由CSDN通过智能技术生成

数据分析之数据处理(二)

一、拉格朗日插值法实际运用

1、创建数据

# 1.1创建数据
data=pd.Series(np.random.rand(100)*100)
data[3,6,33,56,45,66,67,80,90]=np.nan
print(data.head())
print('\n*******总数据量:%i******\n'%len(data))

运行结果
在这里插入图片描述

2、缺失值的数量

# 1.2缺失值的数量
data_na=data[data.isnull()]
print('\n*******缺失值数据量:%i******\n'%len(data_na))
print('\n*******缺失数据占比:%.2f%%******\n'%(len(data_na)/len(data)*100))

运行结果
在这里插入图片描述

3、密度图查看缺失情况

# 1.3密度图查看缺失情况
data_c=data.fillna(data.median())#中位数填充缺失值
fig,axes=plt.subplots(1,4,figsize=(20,5))
data.plot.box(ax=axes[0],grid=True,title='数据分布')
data.plot(kind='kde',style='--r',ax=axes[1],grid=True,title='删除缺失值',xlim=[-50,150])
data_c.plot(kind='kde',style='--b',ax=axes[2],grid=True,title='缺失值填充中位数',xlim=[-50,150])
plt.show()

运行结果
在这里插入图片描述

4、拉格朗日插值法

# 1.4拉格朗日插值法
# 创建函数做插值,由于数据量原因,k=5表示以空值前后5个数据为例做插值
def na_c(s,n,k=5):
    # y=s[list(range(n-k,n+k+1))]#取数,因为Series不支持反向索引,也就是类似于pd.Series[-1]第一个缺失值位于第三位,n-k出现负值,所以报错。
    y = s.reindex(list(range(n - k, n)) + list(range(n + 1, n + 1 + k)))  # 取数
    y=y[y.notnull()]#剔除空值
    return (lagrange(y.index,list(y))(n))
na_re = []

for i in range(len(data)):
    if data.isnull()[i]:
        data[i]=na_c(data,i)
        print(na_c(data,i))
        na_re.append(data[i])
data.dropna(inplace=True)#清除插值后人存在的缺失值
data.plot(kind='kde',style='--k',ax=axes[3],grid=True,title='拉格朗日插值后',xlim=[-50,150])
plt.show()

运行结果
在这里插入图片描述
注:因为数据随机产生,所以本图的前三幅子图与上图的前三幅子图不同

本文出现小插曲

  • 图像中汉字的显示
# 设置字体,不设置不能显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定字体
  • 图像中负数的显示
# 图画中正常显示负数
plt.rcParams['axes.unicode_minus'] =False
  • series不能反向索引
#因为Series不支持反向索引,也就是类似于pd.Series[-1]第一个缺失值位于第三位,n-k出现负值,所以报错。 
#y=s[list(range(n-k,n+k+1))]#取数
y = s.reindex(list(range(n - k, n)) + list(range(n + 1, n + 1 + k)))  # 取数   

自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值