格式化 pandas 数据框

Format a pandas dataframe

    MachineName EventLogs
0   P79         Yes
1   P14         Yes
2   P1          No
3   P93         No

我使用以下语句计算数据框中的日志数:

df1 = pd.value_counts(df['Logs'].values, sort=False)

当我打印 df1 时,输出如下所示:

Yes  2
No   2
dtype: int64

我无法使用结果创建饼图,因为创建饼图时需要指定列名。

类似

%%chart pie --fields Value,Count --data df1

不确定如何将列名添加到 df1。任何帮助将不胜感激。

你需要reset_index,因为你有Series:

df1 = pd.value_counts(df['Logs'].values, sort=False).reset_index()
df1.columns = ['value','count']

有样本:

df1 = pd.value_counts(df['EventLogs'].values, sort=False).reset_index()
df1.columns = ['value','count']
print (df1)
  value  count
0    No      2
1   Yes      2

或者您可以使用 value_counts:

df1 = df.EventLogs.value_counts().reset_index(name='Count').rename(columns={'index':'Value'})
print (df1)
  Value  Count
0   Yes      2
1    No      2

sort=False:

df1 = df.EventLogs.value_counts(sort=False)
                  .reset_index(name='Count')
                  .rename(columns={'index': 'Value'})
print (df1)
  Value  Count
0    No      2
1   Yes      2

另一个解决方案是Series.plot.pie - see visualization in docs:

import matplotlib.pyplot as plt
df.EventLogs.value_counts(sort=False).plot.pie()
plt.show()

我不知道你用什么制作饼图,但pandas有一些非常合理的绘图功能(通过 matplotlib)。

df1.plot(kind='pie')