Hämta data från flera kalkylblad

Effektiv datainläsning med pandas

Amany Mahfouz

Instructor

Välja blad att läsa in

  • read_excel() läser som standard det första bladet i en Excel-fil
  • Använd nyckelordsargumentet sheet_name för att läsa andra blad
  • Ange kalkylblad med namn och/eller (nollindexerat) positionsnummer
  • Skicka en lista med namn/nummer för att läsa flera blad samtidigt
  • Alla argument till read_excel() gäller för samtliga inlästa blad
Effektiv datainläsning med pandas

Välja blad att läsa in

Skärmbild av ett kalkylbladsprogram med flikar för två kalkylblad

Effektiv datainläsning med pandas

Läsa in valda blad

# Get the second sheet by position index
survey_data_sheet2 = pd.read_excel('fcc_survey.xlsx',
                                   sheet_name=1)

# Get the second sheet by name survey_data_2017 = pd.read_excel('fcc_survey.xlsx', sheet_name='2017')
print(survey_data_sheet2.equals(survey_data_2017))
True
Effektiv datainläsning med pandas

Läsa in alla blad

  • Skicka sheet_name=None till read_excel() för att läsa alla blad i en arbetsbok
survey_responses = pd.read_excel("fcc_survey.xlsx", sheet_name=None)

print(type(survey_responses))
<class 'collections.OrderedDict'>
for key, value in survey_responses.items():
    print(key, type(value))
2016 <class 'pandas.core.frame.DataFrame'>
2017 <class 'pandas.core.frame.DataFrame'>
Effektiv datainläsning med pandas

Sätta ihop allt

# Create empty dataframe to hold all loaded sheets
all_responses = pd.DataFrame()

# Iterate through dataframes in dictionary for sheet_name, frame in survey_responses.items(): # Add a column so we know which year data is from frame["Year"] = sheet_name
# Add the dataframe to all_responses all_responses = pd.concat([all_responses, frame])
# View years in data print(all_responses.Year.unique())
['2016' '2017']
Effektiv datainläsning med pandas

Nu kör vi en övning!

Effektiv datainläsning med pandas

Preparing Video For Download...