2017-02-20 40 views
0

我想繪製我的數據框架使用seaborn和matplotlib,但得到錯誤就像不能將字符串轉換爲浮動。如何在python中繪製重複文本的計數

我的數據是這樣的:

ID  | Status  | Date | Columns| 
-------+-------------+------+--------+ 
28  | ACTIVE  |  |  | 
29  | ACTIVE  |  |  | 
49623 | TERMINATED |  |  | 
49624 | TERMINATED |  |  | 
49625 | TERMINATED |  |  | 

對於我迄今爲止嘗試:

df_count = df.apply(pd.value_counts) plt.plot(df_count)

哪裏df_count看起來像

  |STATUS| 
-----------+------+ 
ACTIVE  |38537 | 
TERMINATED |1185 | 

當試圖做sns.barplot(df)它提供了以下錯誤:

unsupported operand type(s) for +: 'int' and 'str'

,並試圖做plt.plot(df)它提供了以下錯誤:

ValueError: could not convert string to float: '12/31/2014 0:00'

我的Python繪圖似乎是相當爲零請建議。

+0

它可能如果你告訴我們,請告訴我們,最終情節應該如何。 – ImportanceOfBeingErnest

回答

1

我想你必須指定x和y。請嘗試:

sns.barplot(X = df_count.index,Y = df_count.Status)

sns.plt.show()

-edit

test.csv:

,STATUS 
ACTIVE,38537 
TERMINATED,1185 

代碼:

import pandas as pd 
import seaborn as sns 

df = pd.read_csv('test.csv', delimiter=',') 
df.index.names = ['Type'] 

sns.barplot(x=df.index,y=df.STATUS) 
sns.plt.show() 

輸出: enter image description here

+0

請給我一些建議讓我的繪圖技巧更好。 :-) – RanchiRhino

2

最簡單的方法就是用熊貓的整合繪圖功能,使用 df_count.plot(kind="bar")

下面是一個完整的例子:

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 

cats = np.random.choice(["Active", "Terminated"], 100, p=[0.43, 0.57]) 
df = pd.DataFrame({"ID": np.arange(100), "Status":cats, "unusedData":np.random.rand(100)}) 

df_count = df[["Status"]].apply(pd.value_counts) 
df_count.plot(kind="bar") 

plt.show() 

enter image description here

0

最後兩個答案都與pandasseaborn,這一個是matplotlib

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
df = pd.DataFrame({"STATUS": ['Active', 'Terminated'], "counts": [38537,1185]}) 
x_pos = np.arange(df.shape[0]) 
plt.bar(x_pos, df.counts, align='center', color=['green', 'blue'], alpha=0.5) 
plt.xticks(x_pos, df.STATUS) 
plt.ylabel('Counts') 
plt.title('STATUS') 
plt.show() 

enter image description here