我已经从excecl(csv)带来了数据,它大约是300000行* 1列,我是用db.plot()绘制的-----这是一个时间序列数据
我正试图删除(删除)高于0.006的数据,之后
我想比较数据之间的差异(逐步:彼此相邻),如果差异大于0.00001,我也想删除该数据。
然后,我将只剩下差异非常小(几乎为0,平坦斜率)的数据。
我是python的初学者,我尽了最大的努力,但是我不知道我的代码有什么问题:
import pandas as pd
excel_df = pd.read_csv('data.csv', header=None)
excel_df.plot()
bool_idx = excel_df < 0.006
valid_data = excel_df[bool_idx]
true_data = valid_data.dropna()
# print(true_data)
# print(valid_data)
ax1 = valid_data.plot()
ax1.set_ylim(-0.005, 0.045)
ax1.plot()
print(true_data)
al2 = true_data.diff()
# print(al2)
number = 0
for true_data in ture data:
number = number + 1
if true_data.diff() < 0.00001:
true_data.drop()
print(true_data)
答案 0 :(得分:0)
尝试在您的数据集上运行它。
#!/usr/bin/env python3
# coding: utf-8
# In[1]:
import pandas as pd
excel_df = pd.read_csv('data.csv', header=None)
x=excel_df.plot()
# x
bool_idx = excel_df < 0.006
# bool_idx
valid_data = excel_df[bool_idx]
# valid_data
true_data = valid_data.dropna()
# true_data
ax1 = valid_data.plot()
ax1.set_ylim(-0.005, 0.045)
# ax1
al2 = true_data.diff()
# al2
number = 0
for (true_data_diff_val,rid) in zip(true_data.diff()[0],true_data.diff()[0].index):
# print(number,true_data_diff_val)
# print(rid)
if true_data_diff_val < 0.00001 and rid != 0:
true_data=true_data.drop(int(rid),0)
print(rid)
print(true_data)
据我所知,您要查询的行/元组ID为w.r.t。循环中的if条件,以便将其从另一个数据帧中删除。我所知道的最简单的方法是使用 zip 函数使其与数据并行进行迭代。
此外,您需要在放置行/列时保存数据框,以观察更改!
我检查了 rid!= 0 ,因为diff()将第一个元素设为NaN,因此您可以应用任何适当的条件。