python - 用 scipy 和 pandas 在 python 中绘制山峰和山谷
问题描述
我想定位数据集中的所有峰和谷。我找到了一个可行的解决方案,但我不得不手动进入并将列标题更改为仅包含一个单词的名称。我不会制作一个可以处理多个不同 csv 文件的函数,并且更改所有文件上的列名很麻烦
我已经尝试将列标题设为变量,但熊猫不喜欢这样。我收到错误“AttributeError:'DataFrame' 对象没有属性'typ”。
这是什么工作,如果我手动将列名更改为“数据”。
df = pd.read_csv(path,index_col=False).set_index('Timestamp')
df = pd.DataFrame(df, columns=['Data'])
df['min'] = df.iloc[argrelextrema(df.Data.values, np.less_equal, order=n)[0]['Data']
df['max'] = df.iloc[argrelextrema(df.Data.values, np.greater_equal, order=n)[0]]['Data']
这是我更想做的事情:
def peaks_valleys(path,typ,acc):
df = pd.read_csv(path,index_col=False).set_index('Timestamp')
df = pd.DataFrame(df, columns=[typ])
n = acc #antall nummer sjekket før og etter
df['min'] = df.iloc[argrelextrema(df.typ.values, np.less_equal, order=n)[0]][]typ
df['max'] = df.iloc[argrelextrema(df.typ.values, np.greater_equal, order=n)[0]][typ]
解决方案
Usingdf.typ
与 相同df['typ']
,因此它与 的值无关typ
(这会提高AttributeError
)。最好避免df.ColName
; 而是使用df['ColName']
哪个更安全。
此外,您可以使用 重命名列,或在使用.rename
期间传递它们。read_csv
names=[...]
尝试:
def peaks_valleys(path,typ,acc):
df = pd.read_csv(path,index_col=False, names=['Timestamp', typ]).set_index('Timestamp') #assuming you have two columns, the first of which is the timestamp
n = acc
df['min'] = df.iloc[argrelextrema(df[typ].values, np.less_equal, order=n)[0]][typ]
df['max'] = df.iloc[argrelextrema(df[typ].values, np.greater_equal, order=n)[0]][typ]
推荐阅读
- notepad++ - Notepad++ 或任何其他编辑器:下移一半的行
- android - 如何在反应原生启动活动中添加延迟
- php - 使用 CURL 上传文件并在 Laravel 方法中检索
- reactjs - 反应文本道具换行符
- sql-server - 选择枢轴
- java - 在 .war 文件中加载已编译的 jasper 文件时出错
- shopify - Shopify 购物车页面中的服务器端 API 调用
- ajax - 在 Django 中检索通过 Ajax 发送的 post 变量
- javascript - 如何使用 vue 保持 css 样式
- laravel - 在 Laravel 视图中添加多个变量