pandas对波形异常数据处理实战

admin 2023年12月21日08:23:18评论24 views字数 1278阅读4分15秒阅读模式

做数据分析很大一部分工作量都是在对数据处理,因为数据来源的质量问题,不能保证所有的数据都是正常的。对于数据分析和处理来说pandas无疑是常用的利器。下面通过一个实例来用pandas对波形异常数据进行实战处理。

读取数据

1
2
3
4
5
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df_data=pd.read_csv('dataHRTrend测试波形.csv')
df_data

pandas对波形异常数据处理实战

从csv导入的数据是文本字符串类型的,用《Python将列表中的数据写入csv并正确读取解析》中介绍的方法将文本数据转成列表。

1
2
3
4
5
def str2list(str):
return np.fromstring(str[1:-1], sep=' ')

df_data['HRTrend']=df_data['HRTrend'].apply(str2list)
df_data

pandas对波形异常数据处理实战
用plt查看图形

1
2
3
4
5
6
fig,axes = plt.subplots(3,4,figsize=(12,4))
i=0
for x in range(3):
for y in range(4):
axes[x,y].plot(df_data['HRTrend'][i])
i=i+1

pandas对波形异常数据处理实战

从图形上看出现了异常。我们抽一个数据进行查看,发现前后有很多空值,并且在数据中也存在缺失值。

1
df_data['HRTrend'][0]

pandas对波形异常数据处理实战

1
plt.plot(df_data['HRTrend'][0])

pandas对波形异常数据处理实战

用plt画出图形,可以看到因为有缺失值所以图形并不连续。

异常数据处理

为了更好的展示图像,为以后的数据分析准备数据,我们需要将前后的空值去掉,对于中间存在的异常值我们可以用前值或后值进行填充。

1
2
3
4
5
6
# 定义一个方法,先将空值用0填充,然后去首尾的0,再将中间存在异常的值用前值填充。
def ruledata(df_cloumn):
ps=pd.Series(df_cloumn).fillna(0) #先将为空值用0填充
values=pd.Series(np.trim_zeros(ps)).replace(to_replace=0, method='ffill').values #去首尾0,然后用异常值填充
return values
df_data['rule_HRTrend']=df_data['HRTrend'].apply(ruledata) #将异常数据处理的方法进行应用处理异常值
1
2
3
4
5
6
fig,axes = plt.subplots(3,4,figsize=(12,4))
i=0
for x in range(3):
for y in range(4):
axes[x,y].plot(df_data['rule_HRTrend'][i])
i=i+1

pandas对波形异常数据处理实战

最后可以发现经过异常值修复后图形变得正常连续了。


博客地址:http://xiejava.ishareread.com/

“fullbug”微信公众号


关注:微信公众号,一起学习成长!


原文始发于微信公众号(fullbug):pandas对波形异常数据处理实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月21日08:23:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   pandas对波形异常数据处理实战https://cn-sec.com/archives/2320077.html

发表评论

匿名网友 填写信息