gpt4 book ai didi

python - Pandas:查找 DF 中出现的频率

转载 作者:行者123 更新时间:2023-11-28 22:32:26 25 4
gpt4 key购买 nike

我有一个包含 2 列的数据框,时间和压力,大约有 3000 行,如下所示:

time  value
0 393
1 389
2 402
3 408
4 413
5 463
6 471
7 488
8 422
9 404
10 370

我想找到 1) 最频繁出现的压力值和 2) 在我们看到这个值的时间步数之后。到目前为止我的代码是这样的:

import numpy as np
import pandas as pd
from matplotlib.pylab import *
import re
from pylab import *
import datetime
from scipy import stats

pd.set_option('display.max_rows', 5000)

df = pd.read_csv('copy.csv')
row = next(df.iterrows())[0]
dataset = np.loadtxt(df, delimiter=";")

df.columns = ["LTimestamp", "LPressure"]
list(df.columns.values)

## Timestep
df = pd.DataFrame({'timestep': df.LTimestamp, 'value': df.LPressure})
df['timestep'] = pd.to_datetime(df['timestep'], unit='ms').dt.time
# print(df)

## Find most seen value in pressure
count = df['value'].value_counts().sort_values(ascending=[False]).nlargest(1).values[0]
print (count)

## Mask the df by comparing the column against the most seen value.
print(df[df['value'] == count])

## Find interval differences
x = df.loc[df['value'] == count, 'timestep'].diff()
print(x)

输出是这样的,其中 101 是最频繁值 (400) 出现的次数。

>>> 101
>>> Empty DataFrame
>>> Columns: [timestep, value]
>>> Index: []
>>> Series([], Name: timestep, dtype: object)
>>> [Finished in 1.7s]

我不明白为什么它会返回一个空的索引数组。如果不是

print(df[df['value'] == count])

我用

print(df[df['value'] == 400])

我可以看到带有间隔差异的蒙版 df,如下所示:

50        1.0
112 62.0
215 103.0
265 50.0
276 11.0
277 1.0
278 1.0
318 40.0
366 48.0
367 1.0

但稍后,我将要计算最小值或第二大值等。这就是为什么我要使用 count 而不是特定数字的原因。有人可以帮忙吗?

最佳答案

我建议使用

>>> val = df['value'].value_counts().nlargest(1).index[0]
>>> df[df['value'] == val]
time value
2 2 402
3 3 402
7 7 402
8 8 402

关于python - Pandas:查找 DF 中出现的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com