【发布时间】:2016-02-22 14:52:58
【问题描述】:
我在 csv 文件中有以下数据
SourceID BSs hour Type
7208 87 11 MAIN
11060 67 11 MAIN
3737 88 11 MAIN
9683 69 11 MAIN
我有以下 python 代码。我想绘制具有以下规格的图形。
对于每个SourceID 和Type,我想绘制BSs 随时间变化的图表。如果每个SourceID 和Type 都是单个情节上的子情节,我会更喜欢。我已经尝试了很多使用 groupby 的选项,但似乎无法让它工作。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
COLLECTION = 'NEW'
DATA = r'C:\Analysis\Test\{}'.format(COLLECTION)
INPUT_FILE = DATA + r'\in.csv'
OUTPUT_FILE = DATA + r'\out.csv'
with open(INPUT_FILE) as fin:
df = pd.read_csv(INPUT_FILE,
usecols=["SourceID", 'hour','BSs','Type'],
header=0)
df.drop_duplicates(inplace=True)
df.reset_index(inplace=True)
【问题讨论】:
-
你能展示一下你到目前为止所尝试的吗?我在这里没有看到任何绘图代码。
-
@ali_m - 我已经更新了绘图代码。但它给出了一些奇怪的情节。
-
IndexError是我的错——我的代码将nrows设置得太小,以至于在ngrps不能被ncols整除的情况下无法容纳所有图。这是因为我在做地板除法ngrps // ncols,而不是天花板除法-(-ngrps // ncols)。这现在在我的回答中得到了解决。 -
警告无需担心 - 只要只有一个点要绘制,就会出现警告,因此当轴自动缩放时,下限和上限设置为相同的值。这没关系,因为我在最后手动设置了轴限制。您可以通过在绘图时设置 x 轴限制(例如,通过将
xlim=关键字参数传递给rows.plot(..))或通过将scalex=False, scaley=False传递给以防止轴自动缩放来消除警告rows.plot()。我对我的答案进行了后者的更改。 -
@ali_m - 即使在 rows.plot() 中将
scalex和scaley设置为 false 后,警告仍然存在。我现在并不太担心。请参阅下面的评论关于新错误。谢谢。
标签: python-3.x numpy pandas matplotlib graph