我正在爬目录并读取一堆文件并对其进行解析。我所需要的只是获取数据框的大小。我通过使用len(df.index)
来实现。
每个目录有10个文件,从0到9编号。我将所有这些len(df.index)
添加到数据帧中,其中字母['A', 'B', 'C', 'D']
来自类别列表。这些值通过df2.loc[seed,nd] = len(df.index)
添加到数据帧。结果数据帧如下:
A B C D
0 10515.0 160592.0 221621.0 198884.0
1 9777.0 161307.0 222064.0 199841.0
2 10957.0 159954.0 219553.0 198622.0
3 12731.0 157862.0 221250.0 NaN
4 11765.0 162177.0 NaN NaN
5 8849.0 155631.0 NaN NaN
6 10549.0 160976.0 NaN NaN
7 8694.0 158953.0 NaN NaN
8 11696.0 160952.0 NaN NaN
9 10590.0 161046.0 NaN NaN
在我的脚本中,我在for循环中抓取了两个目录X
和Z
,得到了两个数据框,如上面的一个。
问题是我正在尝试使用Seaborn水平条形图绘制此数据框
sns.barplot(data=df2)
但是我不知道如何指定类别,例如显示的here。
这如何完成?我需要更改数据框格式吗?
我想得到这样的结果(来自MS Excel)
答案 0 :(得分:1)
您可以将两个DataFrame的concat
与参数keys
一起用于指定组,然后通过melt
进行整形,最后一次使用参数hue
来指定组:
dfs = [df21, df22]
df = pd.concat(dfs, keys=('X','Z')).reset_index(level=0).melt('level_0')
sns.barplot(x='value', y='variable', hue='level_0', data=df)
答案 1 :(得分:1)
我认为可以使用seabon's barplot function的orient
属性来实现。
示例-
import pandas as pd
import numpy as np
import seaborn as sns
df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
sns.barplot(data=df, orient = 'h')