2013-06-19 28 views
0

新的Python,和一般的編程和努力:創建多個CSV文件疊加圖在Python

1)多讀(格式相同),從文件夾中的CSV文件

2)劇情列X 「時間」 VS從每個CSV文件的列Y「的pH」上的單一的情節

3)創建使用文件名(圖例而不的.csv),作爲圖的每行中的參考。

我已經能夠打開一個CSV文件,繪X VS Y,但沒有成功遍歷文件和上一個圖疊加多條線路。

任何幫助將不勝感激!我嘗試了幾種不同的方式來讀取文件,而我只在下面顯示其中的一個。我寧願將這些文件作爲單獨的熊貓數據表讀入,以便以後可以對它們進行製作。就目前而言,我只希望得到一些基本的代碼工作。基於@保羅ħ建議

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from pandas import Series, DataFrame 
from numpy import nan as NA 
import glob 

ferms = glob.glob ('Python/CSV/*.csv') 
print ferms 

for ferm in ferms: 
    fig = plt.figure() 
    ax = fig.add_subplot(1,1,1) 
    ax.plot(ferms['EFT(h)'], ferms['pH1.PV [pH]'], 'k--') 
    plt.xlabel('EFT(h)') 
    plt.ylabel('pH') 
    plt.show() 

訂正代碼


import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from pandas import Series, DataFrame 
from numpy import nan as NA 
import glob 

ferms = glob.glob ('Python/CSV/*.csv') 
print ferms 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 

for ferm in ferms: 
# define the dataframe 
    data = pd.read_csv(ferm)  
    ax.plot(ferms[0], ferms[3], 'k--') 

plt.xlabel('EFT(h)') 
plt.ylabel('pH') 
plt.show() 

新的錯誤:

- > 235返回陣列(A,D型細胞,複製=假, order =序列) 237 DEF asanyarray(A,D型細胞=無,爲了=無):

ValueError異常:無法將字符串轉換爲float:Python的/ CSV \ 20135140.csv


只是爲了檢查,我走進了我的CSV文件,並刪除了頭,以爲他們本來的原因'字符串浮動'錯誤。但是,即使只有我的csvs中的數字,它也會拋出相同的錯誤。

+4

請顯示您使用的代碼並說明它不起作用。 – BrenBarn

+0

如果你告訴我們你在做什麼,你會得到更好的幫助。現在你的問題是:'請爲我做我的工作',這往往會惹惱那些可能幫助你的人;) – tacaswell

+0

當你嘗試覆蓋多行時,什麼不起作用? – tom10

回答

0

它看起來不起作用,因爲您正在每個循環創建一個新圖形。

試試這個:

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from pandas import Series, DataFrame 
from numpy import nan as NA 
import glob 

ferms = glob.glob ('Python/CSV/*.csv') 
print ferms 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 

for ferm in ferms: 
    # define the dataframe 
    data = pd.read_csv(ferm) 
    ax.plot(data['EFT(h)'], data['pH1.PV [pH]'], 'k--') 

plt.xlabel('EFT(h)') 
plt.ylabel('pH') 
plt.show() 
+0

謝謝@Paul H.越來越近我想。但現在它拋出一個錯誤,關於不能將字符串轉換爲浮點數... import pandas as pd import numpy as np import matplotlib。pyplot作爲PLT 從熊貓導入系列,數據幀從 進口numpy的楠爲NA 進口水珠 ferms = glob.glob( '的Python/CSV/*。CSV') 打印ferms 無花果= plt.figure() ('EFT(h')),其中螢光素(螢光素)[fer(fer)[]],fer [3],' - ') plt.xlabel ) ') plt.ylabel(' PH「) plt.show()錯誤:ValueError異常:無法將字符串轉換爲float:Python的/ CSV \ 20135140.csv – biltron

+0

@biltron我不能讀入所有的代碼評論。所以我的下一個觀察是你從來沒有實際製作數據框。我編輯了我的回覆以幫助你更多。 –

+0

再次感謝,我將保留代碼在未來的意見... – biltron

0

我有一個類似的問題,試圖從任意數量的文件繪製數據。這是我的文章鏈接Traceback lines on plot of multiple files。基本上你想繪製來自每個文件的數據,但不包括迭代遍歷每個文件的循環內的plt.show()。 plt.show()應該在循環之外。