2015-07-12 26 views
0

我有一個查詢數據庫數據的腳本。然後將其導出到CSV文件。目標是用列中的數字數據創建一個繪圖。但該腳本在指定的列中看不到任何數值。Python Pandas情節。腳本在文本文件中看不到數字值

import pandas.io.data 
import matplotlib.pyplot as plt 
import pandas as pd 
from pandas import DataFrame 
import datetime 
import pandas.io.data 
import psycopg2 
import csv 
import pandas.io.data 

conn = psycopg2.connect("host='172.31.98.161' dbname='servers' user='seeker'") 
cur = conn.cursor() #Create the cursor 
cur.execute("select hostname, used_ram_raw from server_perf where     hostname='localhost.localdomain'") 
rows = cur.fetchall() 
conn.close() 

df = pd.DataFrame(rows, columns=['One','Two']) 
df.to_csv("file.csv") 
df = df.convert_objects(convert_numeric=True)  
df[['Two']].plot() 
plt.show() 

以上腳本會產生所謂的 「FILE.CSV」

,One,Two 
0,localhost.localdomain,1521819648.00 
1,localhost.localdomain,1632538624.00 
2,localhost.localdomain,1633038336.00 
3,localhost.localdomain,1632264192.00 

產生的誤差是WHN試圖情節以下文件:

TypeError: Empty 'DataFrame': no numeric data to plot 

只是爲了測試我做了

print df[['Two']] 

,它打印以下內容

   Two 
0 1521819648.00 
1 1632538624.00 
2 1633038336.00 
3 1632264192.00 

我在做什麼錯? :(

回答

2

這是非常有可能,如果你鍵入

df.Two.dtype 

它將輸出,其類型爲字符串(它會說這是Object或類似的東西)。

這很容易補救如果你需要做一些數字吧,用astype

df.Two.astype(float) 

事實上,你可以重新分配回自己:

df.Two = df.Two.astype(float) 
+0

謝謝阿米!有效。這是更正的代碼。 DF = pd.DataFrame(行,列= [ '一', '兩個']) df.to_csv( 「FILE.CSV」) 打印DF [[ '二']] 打印DF。 Two.dtype df.Two = df.Two.astype(float) df [['Two']]。plot() plt.show() –

相關問題