पांडा का उपयोग करते हुए अजगर में एक एक्सेल फाइल पढ़ना


144

मैं इस तरह से एक एक्सेल फ़ाइल पढ़ने की कोशिश कर रहा हूँ:

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

जो एक ऐसी त्रुटि फेंकता है जो दो तर्कों की अपेक्षा करती है, मुझे नहीं पता कि दूसरा तर्क क्या है और यह भी कि मैं यहां क्या हासिल करने की कोशिश कर रहा हूं एक एक्सेल फाइल को डेटाफ्रेम में परिवर्तित करने के लिए, क्या मैं इसे सही तरीके से कर रहा हूं? या पंडों का उपयोग करने का कोई अन्य तरीका है?

जवाबों:


223

बंद करें: पहले आप कॉल करते हैं ExcelFile, लेकिन फिर आप .parseविधि को कॉल करते हैं और इसे शीट नाम पास करते हैं।

>>> 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  

आप जो कर रहे हैं वह उस विधि को कॉल कर रहा है जो उदाहरण के बजाय कक्षा में ही रहती है, जो ठीक है (हालांकि बहुत मुहावरेदार नहीं है), लेकिन यदि आप ऐसा कर रहे हैं, तो आपको शीट नाम भी पास करना होगा:

>>> 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 ") का उपयोग करता हूं, तो यह स्वचालित रूप से प्रत्येक कॉलम के पहले सेल के मूल्य को डेटाफ्रेम के कॉलम नामों के रूप में लेता है, मैं अपने कॉलम के नाम कैसे निर्दिष्ट करूं?
राकेश अधिवेशन

2
पांडा 15.0.2 में, parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")काम नहीं करता है और त्रुटि फेंकता है module object has no attribute ExcelFileparsed = pd.io.excel.ExcelFile.parse(xl, "Sheet1")मेरे लिए काम करता है
नील

अच्छा लगा। यह लगभग उतना ही साफ-सुथरा है कि एक टैब की समान पहुंच का उपयोग करके कैसे प्राप्त किया जाता है openpyxl। क्या पांडा हुड के नीचे ओपनपीक्सएल बुला रहा है?
पाइडरमैन

2
पहली पंक्ति को हेडर में बदलने से आप इसे कैसे रोक सकते हैं? मैंने पैरामीटर का उपयोग करने की कोशिश की है, headers=Noneलेकिन जब तक यह कोड को नहीं तोड़ता, तब तक यह काम नहीं करता था।
elliptica

8
मुझे पता चला कि इस काम के लिए पाइप इंस्टाल xlrd की जरूरत है। Xlrd पैकेज पांडा के साथ नहीं आता है, इसलिए यदि आपने इसे किसी अन्य उद्देश्य के लिए स्थापित नहीं किया है, तो आपको "ImportError: No मॉड्यूल जिसे xlrd" अपवाद नहीं मिलेगा। किसी भी दर पर मैक पर पांडा के 0.19.0 के रूप में सच है।
user5920660

95

यह बहुत सरल और आसान तरीका है।

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)

डॉक्यूमेंट की पूरी जानकारी देखें http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.read_excel.html

FutureWarning: sheetnameकीवर्ड नए पंडों संस्करणों के लिए पदावनत है, sheet_nameइसके बजाय उपयोग करें ।


20

मैंने सोचा कि मुझे यहाँ जोड़ना चाहिए, यदि आप पंक्तियों या स्तंभों को उन तक पहुँचाना चाहते हैं, तो आप ऐसा करते हैं:

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

संपादित करें:

विधियां icol(i)और irow(i)अब अपदस्थ हैं। आप sheet1.iloc[:,i]i-th कॉल sheet1.iloc[i,:]को प्राप्त करने के लिए और i-th पंक्ति प्राप्त करने के लिए उपयोग कर सकते हैं ।


13

मुझे लगता है कि इससे आपकी जरूरत पूरी होनी चाहिए:

import pandas as pd

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

0

आपको बस अपनी फ़ाइल को पथ फ़ीड करने की आवश्यकता है pd.read_excel

import pandas as pd

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

एक्सेल को लोड करते समय पंक्तियों को अनदेखा करना जैसे मापदंडों का पता लगाने के लिए चेकआउट करेंskiprows



0

यहाँ सिंटैक्स के साथ एक अद्यतन विधि है जो अजगर कोड में अधिक सामान्य है। यह आपको एक ही फाइल को कई बार खोलने से रोकता है।

import pandas as pd

sheet1, sheet2 = None, None
with pd.ExcelFile("PATH\FileName.xlsx") as reader:
    sheet1 = pd.read_excel(reader, sheet_name='Sheet1')
    sheet2 = pd.read_excel(reader, sheet_name='Sheet2')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.