格式化 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')
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')