假设我有一个带数值的熊猫系列。将排序的系列与增加的整数索引进行绘制的最短方法是什么?
情节应该显示:
x轴:0,1,2,3,4,......
y轴:系列的排序值。
(请注意我不能在系列'索引上绘制它,因为索引不一定是增加索引。在我的情况下,它是我用于不同原因的一些id)
由于
答案 0 :(得分:8)
这将首先对系列进行排序然后绘制,忽略系列的索引:
ts = pd.Series(np.random.randn(100), index=pd.date_range('1/1/2000', periods=100))
ts.sort_values().plot(use_index=False)
答案 1 :(得分:2)
快速简便:您可以添加一个增加整数的列,并将其用作x值:
# some dataframe df
df['int_index'] = range(len(df))
df.plot(x='int_index', y='sorted_values')
如果您不想保留索引,请稍后删除它:
df.drop('int_index', axis=1, inplace=True)
辅助功能:
Pandas plot
功能不需要"外部"数据作为指数。您可以直接使用matplotlib绘制为tnknepp显示的内容,或者使用辅助函数保留Pandas绘图(和格式化):
def plot_sorted(series, **kwargs):
df = pd.DataFrame({'data': series}).reset_index(drop=True)
df.plot(**kwargs)
使用这样的包装器,您可以快速绘制任何Series
并通过调用将用于调用plot
方法的相应参数来自定义绘图。例子:
ts = pd.Series(np.random.randn(100), index=pd.date_range('1/1/2000', periods=100))
# default pandas plot (with integer indices)
plot_sorted(ts)
# scatter plot (using `data` for x and y)
plot_sorted(ts, x='data', y='data', kind="scatter")
答案 2 :(得分:2)
一行:
{{1}}
这假设您的数据框名为df,并且您想绘制存储在“A”列中的数据。