1. 关于csv文件
1.1 python读取csv文件
import pandas as pd
df = pd.read_csv('./data.csv', encoding='utf-8')
1.2 python存储csv文件
import pandas as pd
df = pd.DataFrame({'A':[1], 'B':[2]})
df.to_csv('./data.csv', encoding='utf-8')
1.3 python将csv文件转为excel文件
def csv2excel(folder_name, excel_path):
"""
给定文件夹,将文件夹下的所有csv文件转成一个excel文件 excel文件的sheet name对于csv的文件名
:param folder_name: 需要转的文件夹下的文件
:param excel_path: 存放excel文件的路径
:return:
"""
with ExcelWriter(excel_path, mode='w') as writer:
for dirpath, dirnames, filenames in os.walk(folder_name):
for filename in filenames:
if filename.endswith('.csv'):
file_path = os.path.join(dirpath, filename)
pd.read_csv(file_path).to_excel(writer, sheet_name=os.path.splitext(filename)[0], index=False)
2. 关于excel文件
2.1 python读取excel文件
(1)python读取多个sheet的excel文件
import pandas as pd
time_start = time.time()
dfs = pd.read_excel('./多个sheet.xlsx', sheet_name=None)
keys = list(dfs.keys())
result = pd.DataFrame()
num = 1
for i in keys:
df = dfs[i]
print(f'第{num}个 sheet 的数据如下:\n{df}')
# result = pd.concat([result,df])
time_end = time.time()
print('共耗时 {}分 {}秒'.format(int(round((time_end - time_start) / 60,0)),round((time_end - time_start) % 60,2)))
(2)python合并多个excel:
os.walk()文件目录遍历器
语法:os.walk(file_path),file_path为需要遍历的目录地址,返回一个三元组(dirpath, dirnames, filenames)。
1)dirpath所指的是当前正在遍历的这个文件夹的地址,root与file_path相同
2)dirnames 是一个 list ,内容是该文件夹中所有目录的名字
3)filenames 是一个 list , 内容是该文件夹中所有文件的名称
实际运用中最常用到的返回值是files
import os
import pandas as pd
def append(path): #path:所有需要合并的excel文件所在的文件夹
filename_excel = [] # 建立一个空list,用于储存所有需要合并的excel名称
frames = [] # 建立一个空list,用于储存dataframe
for dirpath, dirnames, filenames in os.walk(path):
for file in filenames:
file_with_path = os.path.join(dirpath, file)
filename_excel.append(file_with_path)
df = pd.read_excel(file_with_path, engine='openpyxl')
# 将文件名中包含的日期信息写入dataframe的日期列:
# df["日期"] = pd.to_datetime(file.strip('.xls')[-1:]) # 根据情况调整日期位置
# 将sheet名称命名为excel的名字:
# df.to_excel(writer, sheet_name=file.strip('.xls')) # 删除文件名的后缀,如.xlsx/.csv
frames.append(df)
df = pd.concat(frames, axis=0)
return df
file_path = './file_name'
append(file_path)
os.listdir():参数为文件夹路径,可以返回文件夹下的所有子文件夹、文件名称;但是不能返回子文件夹下的文件,并且仅返回名称。
import os
# 项目所在的绝对路径
project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
resource_dir = os.path.join(project_dir, 'resource')
file_list = []
for file_name in os.listdir(os.path.join(resource_dir, "ori_data")):
file_list.append(file_name.split(".")[0])
2.2 python存储excel文件