如何从Panda DataFrame中获取n个点的块来绘制它们的平均值



我有一个大约6000行的csv文件,我想绘制从x(49(行到y(3266(行的n(75(个点的平均值。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(
r'C:IntelSolinst-cleaned upyellow.csv',
skiprows=13,
encoding='unicode_escape',
parse_dates=[['Date', 'Time']]
)

x = df['Date_Time'][49:124]  # First 75 points I want the mean for
y = df['Mlevel'][49:124]
plt.plot(x, y, 'lightblue', label='Normal day')

那么,我该如何获得下面的75分,直到第3266行呢?

这里有一些最小的数据来重现您的情况:

import pandas
df = pandas.DataFrame({
"date": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
"level": [2., 1., 4.3, 7., 6.5, 8.2, 9.6, 2., 2.1, 3., 4.2, 2]
})

要从for循环中的数据中获得规则间隔的平均值,可以执行以下操作:

start = 0     # First row to consider
stop = 11     # Last row to consider
interval = 3  # The desired chunk size
for i in range(start, stop, interval):
print(df["level"][i:(i + interval)].mean())
# Or do something else with the means ...
2.433333333333333
7.233333333333333
4.566666666666666
3.0666666666666664

要绘制方法,您可以将其更改为:

import matplotlib.pyplot as plt
means = []
for i in range(start, stop, interval):
means.append(df["level"][i:(i + interval)].mean())
plt.plot(means)

最新更新