Panda kullanarak python'da bir Excel dosyasını okuma


144

Bir excel dosyasını bu şekilde okumaya çalışıyorum:

newFile = pd.ExcelFile(PATH\FileName.xlsx)
ParsedData = pd.io.parsers.ExcelFile.parse(newFile)

beklenen iki argüman söyleyen bir hata atar, ikinci argümanın ne olduğunu bilmiyorum ve aynı zamanda burada elde etmeye çalıştığım bir Excel dosyasını bir DataFrame dönüştürmek, doğru şekilde mi yapıyorum? ya da panda kullanarak bunu yapmanın başka bir yolu var mı?

Yanıtlar:


223

Kapat: önce ararsınız ExcelFile, sonra .parseyöntemi çağırır ve sayfa adını iletirsiniz.

>>> xl = pd.ExcelFile("dummydata.xlsx")
>>> xl.sheet_names
[u'Sheet1', u'Sheet2', u'Sheet3']
>>> df = xl.parse("Sheet1")
>>> df.head()
                  Tid  dummy1    dummy2    dummy3    dummy4    dummy5  \
0 2006-09-01 00:00:00       0  5.894611  0.605211  3.842871  8.265307   
1 2006-09-01 01:00:00       0  5.712107  0.605211  3.416617  8.301360   
2 2006-09-01 02:00:00       0  5.105300  0.605211  3.090865  8.335395   
3 2006-09-01 03:00:00       0  4.098209  0.605211  3.198452  8.170187   
4 2006-09-01 04:00:00       0  3.338196  0.605211  2.970015  7.765058   

     dummy6  dummy7    dummy8    dummy9  
0  0.623354       0  2.579108  2.681728  
1  0.554211       0  7.210000  3.028614  
2  0.567841       0  6.940000  3.644147  
3  0.581470       0  6.630000  4.016155  
4  0.595100       0  6.350000  3.974442  

Yaptığınız şey, örnek değil, sınıfın kendisinde yaşayan yöntemi çağırmaktır, ki bu da (çok deyimsel olmasa da), ancak bunu yapıyorsanız, sayfa adını da iletmeniz gerekir:

>>> parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")
>>> parsed.columns
Index([u'Tid', u'dummy1', u'dummy2', u'dummy3', u'dummy4', u'dummy5', u'dummy6', u'dummy7', u'dummy8', u'dummy9'], dtype=object)

6
"df = xl.parse (" Sheet1 ")" kullandığımda, veri çerçevesinin sütun adları olarak her sütunun ilk hücresinin değerini otomatik olarak alır, kendi sütun adlarımı nasıl belirleyebilirim?
Rakesh Adhikesavan

2
Pandalar 15.0.2'de, parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")çalışmaz ve hata atar module object has no attribute ExcelFile. parsed = pd.io.excel.ExcelFile.parse(xl, "Sheet1")benim için çalışıyor
Neil

Güzel. Bu, bir sekmeye aynı erişimin nasıl kullanıldığı ile neredeyse aynıdır openpyxl. Pandalar kaputun altında openpyxl mi çağırıyor?
Pyderman

2
İlk satırı başlıklara dönüştürmesini nasıl önlersiniz? Parametreyi kullanarak denedim headers=Noneama kodu kırmadı, ya da işe yaramadı.
Elliptica

8
Bunun için pip install xlrd gerektiğini keşfettim . Xlrd paketi pandalarla birlikte gelmez, bu nedenle başka bir amaçla yüklemediyseniz, "ImportError: xlrd adında bir modül yok" istisnası alırsınız. Mac'te herhangi bir oranda 0.19.0 pandalarından itibaren doğrudur.
user5920660

95

Bu çok basit ve kolay bir yoldur.

import pandas
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname='Sheet 1')
# or using sheet index starting 0
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname=2)

belgelerin tamamını inceleyin http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.read_excel.html

FutureWarning: sheetnameAnahtar kelime daha yeni Panda sürümleri için kullanımdan kaldırıldı, sheet_namebunun yerine kullanın.


20

Buraya eklemeliyim, satırlar veya sütunlar arasında döngü yapmak istiyorsanız, bunu yapmalısınız:

import pandas as pd

# open the file
xlsx = pd.ExcelFile(PATH\FileName.xlsx)

# get the first sheet as an object
sheet1 = xlsx.parse(0)

# get the first column as a list you can loop through
# where the is 0 in the code below change to the row or column number you want    
column = sheet1.icol(0).real

# get the first row as a list you can loop through
row = sheet1.irow(0).real

Düzenle:

Yöntemler icol(i)ve irow(i)artık kullanımdan kaldırıldı. Sen kullanabilirsiniz sheet1.iloc[:,i]i-inci col almak ve sheet1.iloc[i,:]i-inci satır alır.


13

Bunun ihtiyacınızı karşılaması gerektiğini düşünüyorum:

import pandas as pd

# Read the excel sheet to pandas dataframe
DataFrame = pd.read_excel("PATH\FileName.xlsx", sheetname=0)

0

Bunun için dosyanızın yolunu pd.read_excel

import pandas as pd

file_path = "./my_excel.xlsx"
data_frame = pd.read_excel(file_path)

Excel'i yüklerken satırları yoksaymak gibi parametreleri keşfetmek için belgelereskiprows göz atın



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.