python时间序列国家数据

时间:2017-11-27 21:48:10

标签: python pandas numpy dataframe matplotlib

我在csv中有这些列,并希望以时间序列格式绘制英国和法国橙子。

我可以在时间序列中为英国和橘子画情节,但我不能在时间序列中绘制英国+法国橘子。

有人可以帮助我吗?

请查看CSV附带的图片 Oranges_Apples_country.csv

import logging
import datetime
import csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


#import orangesdata from CSV file
df = pd.read_csv('Oranges_Apples_country.csv')
df.head()
df['date'] = pd.to_datetime(df['date'])
df.set_index('date').head()

df = pd.DataFrame(df, columns = ['country', 'product', 'unit', 'date'])

df['country'] = ['UK', 'FRANCE']
df['product'] = ['ORANGES', 'APPLE']
df['unit'] = ['KG']

1 个答案:

答案 0 :(得分:0)

这里有一些代码用于你提到的轴上的子集。我从另一个SO帖子中取了for循环,但我不记得链接。向该贡献者道歉。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = (10,8)

fig, ax = plt.subplots()

df = pd.read_csv('fruit.csv', parse_dates = ['DATE'])
df.set_index('DATE', inplace=True)
df2 = df[((df['COUNTRY'] == 'UK') & (df['PRODUCT'] == 'ORANGE')) | \
        ((df['COUNTRY'] == 'FRANCE') & (df['PRODUCT'] == 'ORANGE'))]

labels = []
for key, grp in df2.groupby(['COUNTRY', 'PRODUCT']):
    ax = grp.plot(ax = ax, y = 'QUANTITY')
    labels.append(key)
lines, _ = ax.get_legend_handles_labels()
ax.legend(lines, labels, loc='upper left')
plt.show()

您可以使用groupby.sum()求和。

df3 = df2.groupby('DATE').sum()
df3.plot()
plt.show()