我有一个大约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)