Python Pandas 直方图 odd/even 排序
Python Pandas Histogram odd/even sorting
我有绘制一些历史的函数(数据在 1...15 范围内)
def show_hist(filename):
df = pd.read_csv(filename, delimiter=',', header=None)
plt.figure(figsize=(10, 6))
df[1].value_counts()[:15].plot(kind='bar')
plt.savefig('img1.png')
plt.clf()
df[3].value_counts()[:15].plot(kind='bar')
plt.savefig('img2.png')
plt.clf()
df[4].value_counts(sort = False).plot(kind='bar')
plt.savefig('img3.png')
我的问题是关于 img3.png 的部分 - 它保存了从 1 到 15 的 15 个柱状图的直方图。
有时当我将此函数导入同一项目中的另一个文件或只是复制代码时,img3 上的栏按 odd/even 分组 - 栏 2..4..6..8..等在左边,1..3..5..等在右边
为什么会这样?有没有办法让它再次变直?
PS 数据如下所示:
8796,.2.3.5.7.14.15,6,.2.3,2
8797,.1.3.8.12.13.15,6,.1.3,1
8798,.9,1,.9,9
8799,.5.6.10,3,.5.6,5
8800,.3.5.12.14,4,.3.5,3
8801,.4.11.12.13,4,.4.11,4
correct img
wrong img
因此,您正在尝试使用 value_counts 绘制直方图,这里的问题是 pandas 索引未排序。
请尝试以下代码:
aux = df[4].value_counts()
aux.sort_index().plot(kind='bar')
我有绘制一些历史的函数(数据在 1...15 范围内)
def show_hist(filename):
df = pd.read_csv(filename, delimiter=',', header=None)
plt.figure(figsize=(10, 6))
df[1].value_counts()[:15].plot(kind='bar')
plt.savefig('img1.png')
plt.clf()
df[3].value_counts()[:15].plot(kind='bar')
plt.savefig('img2.png')
plt.clf()
df[4].value_counts(sort = False).plot(kind='bar')
plt.savefig('img3.png')
我的问题是关于 img3.png 的部分 - 它保存了从 1 到 15 的 15 个柱状图的直方图。
有时当我将此函数导入同一项目中的另一个文件或只是复制代码时,img3 上的栏按 odd/even 分组 - 栏 2..4..6..8..等在左边,1..3..5..等在右边
为什么会这样?有没有办法让它再次变直?
PS 数据如下所示:
8796,.2.3.5.7.14.15,6,.2.3,2
8797,.1.3.8.12.13.15,6,.1.3,1
8798,.9,1,.9,9
8799,.5.6.10,3,.5.6,5
8800,.3.5.12.14,4,.3.5,3
8801,.4.11.12.13,4,.4.11,4
correct img
wrong img
因此,您正在尝试使用 value_counts 绘制直方图,这里的问题是 pandas 索引未排序。 请尝试以下代码:
aux = df[4].value_counts()
aux.sort_index().plot(kind='bar')