2016-04-09 48 views
1

Birkaç ay önce sahip olmadığım pandalarla ilgili bir sorun yaşıyorum. Kullanıcı girdisinden (tkinter kullanarak) bir veri seti alıp pandalar veri kümesine koymaya çalışıyorum.Pandalar DataFrame Veriler Okunmuyor

1.000000 03/27/2016 13:29:26.098 1431.778943 0.092089 
1.000000 03/27/2016 13:29:26.298 1432.410517 0.078570 
1.000000 03/27/2016 13:29:26.498 1431.905258 0.089538 
1.000000 03/27/2016 13:29:26.698 1431.399999 0.080930 
5.000000 03/28/2016 00:00:00.098 1289.422164 0.392945 
25.000000 03/28/2016 00:00:00.298 1289.295849 0.145016 
25.000000 03/28/2016 00:00:00.498 1289.295849 0.183149 
25.000000 03/28/2016 00:00:00.698 1288.790590 0.175114 
26.000000 03/28/2016 00:25:16.698 1302.053644 0.162170 
..... 

5 sütun ayarlanır, ancak genellikle bir yerde bir veri kümesindeki 200.000 ile 800.000 arası satır aralarında vardır: Burada veri neye benzediği. gösteren bu

import pandas as pd 
import tkinter as tk 
from tkinter import filedialog 

root = tk.Tk() 
root.withdraw() 
file_path = filedialog.askopenfilename() #User selects file 

file = pd.read_table(file_path, index_col=False) 
df = pd.DataFrame(data=file, columns=['Measurement', 'Date', 'Time','CO2', 'Flow'], dtype=object) 

print(file_path) 
print(file) 
print(df) 

baskı (dosya_yolu) doğru yolu, baskı (dosyası) verir göstermektedir doğru verilerin tümünü ve baskı (df):

Measurement Date Time CO2 Flow 
0   NaN NaN NaN NaN NaN 
1   NaN NaN NaN NaN NaN 
2   NaN NaN NaN NaN NaN 
3   NaN NaN NaN NaN NaN 
4   NaN NaN NaN NaN NaN 
5   NaN NaN NaN NaN NaN 
6   NaN NaN NaN NaN NaN 
7   NaN NaN NaN NaN NaN 
8   NaN NaN NaN NaN NaN 
....... 

İşte

kod bu Daha önce aynı şeyi yapmıştım, ama üzerinde çalıştığım senaryoyu kaybettim ve baştan başlamak zorundaydım. Daha önce mükemmel çalıştı, ama ne olduğundan emin değilim. Bunu düzeltmek için birkaç şey denedim: Dosya Dönüştürülen

  1. Değiştirilen indeksi =, d_type = ve diğer özellikler
  2. pd.DataFrame
  3. ait pd.io.parsers.read_table için pd.read_table değiştirme .csv ve kullanılan pd.read_csv için
  4. anlamlı
  5. ama hala tüm veri noktaları için NaN vardı tek bir sütun ve baskı ile pd.Series oluşturma dosyası Kısaltılmış

Rastgele bir veri kümesini kolayca oluşturabilir ve pd.DataFrame'e sorunsuzca dönüştürebilirim (df2 = DataFrame (np.random.randn (10, 5) column = ['a', 'b', ipython'da 'c', 'd', 'e']) ve doğru şekilde görüntülenir).

Aynı verilerle sayısal bir dizi yaptım ve iyi çalıştı. Ben pandaları kullanmak istiyorum çünkü uzun vadede analizlerimin daha kolay olacağını düşünüyorum. Umarım eksik olduğum küçük bir şeydir, ama bir süredir bunun üzerinde çalışıyorum, bu yüzden bir şey denemeye razıyım.

+1

Sana 'df = pd.DataFrame atlayabilirsiniz düşünüyorum (veri = dosya, sütunlar = [ 'Ölçme', 'Tarihi', 'Zaman', 'CO2', 'Debi'], d_type = nesne) '' dosya'' DataFrame'' çünkü. – jezrael

+0

DataFrame yapıcısına veri parametresi olarak ilettiğinizde, eski df'nizi etkin bir şekilde yeniden dizine sokuyorsunuz, eğer bir np dizisi geçtiyseniz, o zaman çalışacaktır: 'pd.DataFrame (data = file.değerler, sütunlar = ['Ölçüm', 'Tarih', 'Zaman', 'CO2', 'Akış'], dtype = nesne) Ayrıca dosyanızda herhangi bir sütun adı yoksa, istediğiniz isimleri param olarak geçirebilirsiniz. 'read_table' yerine, ancak genellikle "header = none" (üstbilgi = yok) olduğunu belirtmeniz gerekir – EdChum

cevap

1

read_table belgelerine bakın, DataFrame'i zaten dosyaya alıyorsunuz.

bu deneyin: Yani

In [71]: f = pd.read_table('table.txt', names=['Measurement', 'Date', 'Time','CO2', 'Flow']) 

In [72]: f 
Out[72]: 
    Measurement  Date   Time   CO2  Flow 
0   1 03/27/2016 13:29:26.098 1431.778943 0.092089 
1   1 03/27/2016 13:29:26.298 1432.410517 0.078570 
2   1 03/27/2016 13:29:26.498 1431.905258 0.089538 
3   1 03/27/2016 13:29:26.698 1431.399999 0.080930 
4   5 03/28/2016 00:00:00.098 1289.422164 0.392945 
5   25 03/28/2016 00:00:00.298 1289.295849 0.145016 
6   25 03/28/2016 00:00:00.498 1289.295849 0.183149 
7   25 03/28/2016 00:00:00.698 1288.790590 0.175114 
8   26 03/28/2016 00:25:16.698 1302.053644 0.162170 

istediğiniz sonucu alamıyorduk neden? Tablo okunduktan sonra istenen sütun isimlerine sahip olmadığını gözlemleyin. Varolan DataFrame ile ve Sütun adları ile DataFrame yapıcısı çağırdığınızda, isimler girdi DataFrame pes tarafından hiçbir sütun olduğundan

In [77]: file = pd.read_table('table.txt', index_col=False) 

In [78]: file 
Out[78]: 
    1.000000 03/27/2016 13:29:26.098 1431.778943 0.092089 
0   1 03/27/2016 13:29:26.298 1432.410517 0.078570 
1   1 03/27/2016 13:29:26.498 1431.905258 0.089538 
2   1 03/27/2016 13:29:26.698 1431.399999 0.080930 
3   5 03/28/2016 00:00:00.098 1289.422164 0.392945 
4  25 03/28/2016 00:00:00.298 1289.295849 0.145016 
5  25 03/28/2016 00:00:00.498 1289.295849 0.183149 
6  25 03/28/2016 00:00:00.698 1288.790590 0.175114 
7  26 03/28/2016 00:25:16.698 1302.053644 0.162170 

Dolayısıyla, tüm boş değerler olsun.

In [80]: df = pd.DataFrame(data=file, columns=['Measurement', 'Date', 'Time','CO2', 'Flow'], dtype=object) 

In [81]: df 
Out[81]: 
    Measurement Date Time CO2 Flow 
0   NaN NaN NaN NaN NaN 
1   NaN NaN NaN NaN NaN 
2   NaN NaN NaN NaN NaN 
3   NaN NaN NaN NaN NaN 
4   NaN NaN NaN NaN NaN 
5   NaN NaN NaN NaN NaN 
6   NaN NaN NaN NaN NaN 
7   NaN NaN NaN NaN NaN 
+0

Mesajlarınız bana pandaları öğrenme konusunda önemli katkılarda bulundu! Seni takdir ediyorum! – Abbas

+0

Teşekkür ederiz! Dokümantasyonu okudum, fakat "_3 DataFrame içine" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ general "_ _ _ _ _ _ _ _ _ Data general general general general general general general general general general general general general general general general Okumak dosyasını bir veri dosyasına koymam gerektiğini düşündüm. Bunu açıklamanın harika bir yolu buydu, teşekkürler! – zdh0012