我有类似的东西
id_1 1000
id_2 200
id_3 100
id_4 50
现在因为这是在数据帧中我可以做df.plot(kind =' bar') 然而,这不是我真正想要的,我想要每两个连续id的单独条形图。 是否更好地转动数据框,然后从那里进行绘图? 或者我可以使用一个整洁的循环。我使用matplotlib非常糟糕。
答案 0 :(得分:1)
听起来你想要条形图来分析数据。从你的问题来看,它并不清楚你想要的切片,但这里有一些例子:
import pandas as pd
# Generate some fake data
df = pd.DataFrame({'x':['id_{}'.format(i) for i in range(10)],
'y':np.random.uniform(size=10)})
从1开始绘制每个其他ID(所以1,3,5 ......)
df[1::2].plot(kind='bar')
只绘制两个连续的ID
df[0:2].plot(kind='bar')
最后一个变体:为所有数据行绘制两个连续的ID
for i in range(0, len(df), 2):
df[i:i+2].plot(kind='bar')
我知道这不是一个完整的答案,但我试图找出你想要的东西。我想我会发布它以查看它是否有帮助,但只要留下评论,如果我的话题很好,我会删除。
答案 1 :(得分:1)
导入所需内容:
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
创建要绘制的数据:
>>> data = [10, 12, 8, 44, 34, 18]
>>> idx = ["a", "b", "c", "d", "e", "f"]
>>> ser = pd.Series(data, index=idx)
>>> ser
a 10
b 12
c 8
d 44
e 34
f 18
dtype: int64
最后创建子系列并绘制它们
>>> # how many bar charts we expect
>>> numofcharts = len(ser) / 2
>>> # prepare axes for subplots (1 row, numofcharts columns one per bar chart)
>>> fig, axs = plt.subplots(1, numofcharts)
>>> for graphi in range(numofcharts):
>>> starti = 2*graphi
>>> # create subseries one for each subchart
>>> subser = ser[starti:starti+2]
>>> # print subseries, to see, what we are going to plot
>>> print subser
>>> # plot subseries as bar subchart
>>> subser.plot(ax=axs[graphi], kind="bar")
a 10
b 12
dtype: int64
c 8
d 44
dtype: int64
e 34
f 18
dtype: int64
并使情节出现:
>>> plt.show()