【问题标题】:python time series country datapython时间序列国家数据
【发布时间】:2018-05-11 05:58:00
【问题描述】:

我在 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']

【问题讨论】:

  • 你能发布你目前所拥有的并准确解释你被困在哪里吗?见stackoverflow.com/help/on-topic
  • 我认为我们需要更多信息才能获得帮助。你用什么软件来绘制数据?
  • 谢谢 - 已经发布了上面的代码。我不确定我是否使用了正确的方法。我应该使用 df 还是 iloc 类型的代码?
  • 如果您的问题是关于子集的,您可以基于第一个 DataFrame 的子集创建一个新的 DataFrame。例如:df2 = df[((df['COUNTRY'] == 'UK') & (df['PRODUCT'] == 'ORANGE')) | ((df['COUNTRY'] == 'FRANCE') & (df['PRODUCT'] == 'ORANGE'))]

标签: python pandas numpy dataframe matplotlib


【解决方案1】:

这里有一些代码可以在您提到的轴上进行子集化。我从另一个 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()

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2023-03-15
    • 2018-10-16
    • 2018-03-18
    • 2014-12-19
    • 2017-12-20
    相关资源
    最近更新 更多