我从一个数据帧中提取了以下数据。 https://i.imgur.com/rCLfV83.jpg
问题是,我该如何绘制图形(可能是直方图类型),其中水平轴是以小时为单位的小时数[16:00 17:00 18:00 ... 24:00]而条形图是每个小时的平均降雨量。
我只是还不了解足够的大熊猫,所以我需要一些帮助。根据要求提供以下示例数据。
transporter.verify((err, success) => {
if (err)
console.error(err);
else
console.log('Your config is correct');
});
答案 0 :(得分:1)
似乎df
是groupby之后的多索引DataFrame。
将索引转换为DatetimeIndex
date_hour_idx = df.reset_index()[['Date', 'Hours']] \
.apply(lambda x: '{} {}:00'.format(x['Date'], x['Hours']), axis=1)
precip_series = df.reset_index()['Precip']
precip_series.index = pd.to_datetime(date_hour_idx)
使用“ H”重新采样至小时数
# This will show NaN for hours without an entry
resampled_nan = precip_series.resample('H').asfreq()
# This will fill NaN with 0s
resampled_fillna = precip_series.resample('H').asfreq().fillna(0)
如果您希望将其作为每小时的平均值,请将groupby(...).sum()
更改为groupby(...).mean()
您也可以重新采样到其他间隔-> pandas resample documentation
有关重新采样DatetimeIndex-> https://pandas.pydata.org/pandas-docs/stable/reference/resampling.html
的更多信息答案 1 :(得分:0)
拥有数据似乎很容易。 在此示例中,我通过Pandas生成了人工数据:
import pandas as pd
import radar
import random
'''>>> date'''
r2 =()
for a in range(1,51):
t= (str(radar.random_datetime(start='1985-05-01', stop='1985-05-04')),)
r2 = r2 + t
r3 =list(r2)
r3.sort()
#print(r3)
'''>>> variable'''
x = [random.randint(0,16) for x in range(50)]
df= pd.DataFrame({'date': r3, 'measurement': x})
print(df)
'''order'''
col1 = df.join(df['date'].str.partition(' ')[[0,2]]).rename({0: 'daty', 2: 'godziny'}, axis=1)
col2 = df['measurement'].rename('pomiary')
p3 = pd.concat([col1, col2], axis=1, sort=False)
p3 = p3.drop(['measurement'], axis=1)
p3 = p3.drop(['date'], axis=1)
求和与绘图的时间:
dx = p3.groupby(['daty']).mean()
print(dx)
import matplotlib.pyplot as plt
dx.plot.bar()
plt.show()