Multiple sheets of an Excel workbook into different dataframes using Pandas - python

I have a Excel workbook which has 5 sheets containing data.
I want each sheet to be a different dataframe.
I tried using the below code for one sheet of my Excel Sheet
df = pd.read_excel("path",sheet_name = ['Product Capacity'])
df
But this returns the sheet as a dictionary of the sheet, not a dataframe.
I need a data frame.
Please suggest the code that will return a dataframe

If you want separate dataframes without dictionary, you have to read individual sheets:
with pd.ExcelFile('data.xlsx') as xlsx:
prod_cap = pd.read_excel(xlsx, sheet_name='Product Capacity')
load_cap = pd.read_excel(xlsx, sheet_name='Load Capacity')
# and so on
But you can also load all sheets and use a dict:
dfs = pd.read_excel('data.xlsx', sheet_name=None)
# dfs['Product Capacity']
# dfs['Load Capacity']

Related

pd.ExcelFile does not get the real sheet_names

I'm trying to read in an Excel file with multiple sheets (s.t that all columns are strings). The below code works for that but it doen't get the correct sheet names. So my dic_excel which is a dictionary with all sheet names and the corresponding data has the following keys: 'Sheet1', 'Sheet2', 'Sheet3', etc. But the actual names of the sheets are different. How do I get the actual names of the sheets?
dic_excel={}
excel = pd.ExcelFile(excel_path)
for sheet in excel.sheet_names:
print(sheet)
columns = excel.parse(sheet).columns
converters = {col: str for col in columns}
dic_excel[sheet] = excel.parse(sheet, converters=converters)
Here is two ways to get the real names of your Excel sheets:
By using pandas.DataFrame.keys with pandas
import pandas as pd
excel = pd.read_excel(excel_path, sheet_name=None)
dic_excel = df.keys()
This will return a dictionnary of the sheetnames
By using Workbook.sheetname with openpyxl
import openpyxl
wb = openpyxl.load_workbook(excel_path)
list_excel = wb.sheetnames
This will return a list of the sheetnames

I want to read Multiple sheets in excel into multiple dataframes in python

An excel file has multiple sheets, i want to read those sheets into multiple pandas dataframe. Is there a way to do it? Please Let Me know.
xls = pd.ExcelFile('path_to_file.xls')
sheets_names = ['Sheet1', 'Sheet2']
dfs = []
for sheet_name in sheets_names:
df[i] = pd.read_excel(xls, sheet_name)

Creating Multiple Dataframes from Multiple key- value pairs in dictionary

Beginner coder here
I am trying to create multiple dataframes from multiple excel sheets in a single notebook with dataframe names being same as sheet names but I am unable to do so.
I have tried this but to no avail.
Kindly help me on this.
file_name='file.xlsx'
xl = pd.ExcelFile(file_name)
dfs = {sh:xl.parse(sh) for sh in xl.sheet_names}
for key in dfs.keys():
dfs[key] = pd.DataFrame()
Expected Result is
excelbook contains sheet1 sheet2
I need to create two dataframes: sheet1 and sheet2
containing all the columns of sheet1 and sheet2
result that I am getting is
I am able to create dictionary having all the dataframe as key and their columns as values but I need them all seperately out of the dictionary.
as
dfs[sheet1]
dfs[sheet2]
i created a loop like this
for key in dfs.keys():
dfs[key] = pd.DataFrame()
but it is creating dataframe for the first key value pair only.
df_sheet1
Kindly help me on this.
You need to use the read_excel function to read a sheet from the excel
import pandas as pd
xls = pd.ExcelFile('sample.xlsx')
dfs = {sh: pd.read_excel(xls, sh) for sh in xls.sheet_names}
This will create a dictionary of DataFrames corresponding to each sheet in the Workbook.
Source: https://stackoverflow.com/a/26521726/5236575
Edit:
Assuming you have sheet1 and sheet2 in your workbook, you can access them as
df_sheet1 = dfs['sheet1']
df_sheet2 = dfs['sheet2']

Extract Partial Data from multiple excel sheets in the same workbook using pandas

I have an excel Workbook with more than 200 sheets of data. Sheet names are as shown in the figure. I would like to assign each sheet to an individual variable as a data frame and later extract some required data from each sheet. Extracted information from all the sheet needs to be stored into a single excel sheet As I cannot keep writing 200 times, I would like to know if I can write any function or use for loop to kind of automate this process.
df1 = pd.read_excel("C:\\Users\\RECL\\Documents\\PRADYUMNA\\Experiment Data\\CNN\\CCCV Data.xlsx", sheet_name=5)
df2 = pd.read_excel("C:\\Users\\RECL\\Documents\\PRADYUMNA\\Experiment Data\\CNN\\CCCV Data.xlsx", sheet_name=10)
df3 = pd.read_excel("C:\\Users\\RECL\\Documents\\PRADYUMNA\\Experiment Data\\CNN\\CCCV Data.xlsx", sheet_name=15)
df1 = df1[0::100]
df2 = df2[0::200]
df3 = df3[0::300]
df1
i=0
for i in range(0,1035), i+5 :
df = pd.read_excel(xlsx, sheet_name=i)
df
I tried something like this but isn't working. Please let me know if there is any simple way to do it.
Thank you :)
Not sure exactly what you are trying to do, but an easier way to traverse through the sheet names would be with a for-each loop:
for sheet in input.sheet_names:
Now you can do something for all the sheets no matter their name.
Regarding " would like to assign each sheet to an individual variable" you could use a dictionary:
sheets = {}
for sheet in input.sheet_names:
sheets[sheet] = pd.read_excel(xlsx, sheet)
Now to get a sheet from the dictionary sheets:
sheets.get("15")
Or to traverse all the sheets:
for sheet in sheets:
%do_something eg.%
print(sheet)
This will print the data for each sheet in sheets.
Hope this helps / brings you further

How to copy and paste data from each excel sheet into a final sheet using Python?

I have 7 excel sheets in one workbook and I am trying to copy and paste the data from each excel sheet into my final sheet. the code below creates the final sheet called 'Final Sheet' but does not copy any of the data from each sheet. I need a loop to go through each sheet and copy and paste the data into the final sheet but don't know how to do it.
Sheet 1 = North America, Sheet 2 = Japan, Sheet 3 = China etc
`#create final list sheet
open = openpyxl.load_workbook(filepath)
ws2 = open.create_sheet('Final List') # this creates the final sheet
open.save(filepath)`
`#put data into final list
wb = openpyxl.load_workbook(filepath)
sheet1 = open.get_sheet_by_name('North America')
finalListSheet = open.get_sheet_by_name('Final List')
wb.save(filepath)`
A similar question was asked here: Python Loop through Excel sheets, place into one df
I simplify this here. This method use Pandas:
import pandas as pd
sheets_dict = pd.read_excel(filepath, sheetname=None)
full_table = pd.DataFrame()
//Loop in sheets
for name, sheet in sheets_dict.items():
sheet['sheet'] = name
full_table = full_table.append(sheet)
//Need to save the DF in your Final Sheet
Here's another question about how to save dataframe (DF) in specific Excel sheet: Pandas Dataframe to excel sheet

Categories