下面是Python操作存储100多万行xlsx文件的完整实例教程。
环境要求
- Python3.x
- pandas库
实现步骤
- 读取数据
使用pandas库的read_excel方法读取xlsx文件,将数据存储到DataFame中,例如:
import pandas as pd
df = pd.read_excel('data.xlsx')
- 拆分数据
我们将数据拆分成多个小的Excel文件,每个Excel文件存储一部分数据。例如,我们可以将原始的数据按行数拆成每个文件1000行的小数据集。
chunk_size = 1000
chunks = [df[i:i+chunk_size] for i in range(0,len(df),chunk_size)]
# 写数据到文件中
for i, chunk in enumerate(chunks):
file_name = f"data_{i}.xlsx"
chunk.to_excel(file_name, index=False)
- 合并数据
将拆分后的小Excel文件合并成一个大文件,我们可以使用pandas库的concat方法将多个DataFame合并成一个DataFame。
files = ['data_0.xlsx', 'data_1.xlsx', 'data_2.xlsx']
data_frames = []
for file in files:
data_frames.append(pd.read_excel(file))
df = pd.concat(data_frames, ignore_index=True)
- 结果验证
验证合并后的数据与原始数据是否一致,可以比较两个DataFrame的shape和head数据。
# 检查数据的shape是否相等
print("Data frame shape: ", df.shape)
print("Original data shape: ", original_data.shape)
# 检查head是否相等
print("Data frame head(5):\n", df.head())
print("Original data head(5):\n", original_data.head())
示例说明
以下是两个示例,展示了如何通过上述步骤存储大量数据到Excel文件中。
示例1:堆叠数据集
我们有时需要将多个数据集(例如来自多个Excel文件)堆叠在一起,以方便对它们进行分析。以下是一个示例,演示如何通过分割和合并数据集来堆叠多个Excel文件中的数据。
import pandas as pd
# read excel sheets into list of DataFrame
sheets = pd.read_excel("path/to/large_file.xlsx", sheet_name=None)
dfs = [df for _, df in sheets.items()]
# split into many excel files
chunk_size = 100000
for i, chunk in enumerate(dfs[0].groupby(np.arange(len(dfs[0])) // chunk_size)):
chunk = chunk[1]
file_name = f"path/to/output/file_{i}.xlsx"
chunk.to_excel(file_name, index=None)
# concatenate dataframes from many files
data_frames = []
for i in range(10):
file_name = f"path/to/output/file_{i}.xlsx"
data_frames.append(pd.read_excel(file_name, index_col=None, header=None))
df = pd.concat(data_frames, axis=0, ignore_index=True)
示例2:合并多个Excel文件
我们可以拆分存储大量数据的单个Excel文件,并将其存储在多个文件中,最后再合并这些文件来恢复原始Excel文件。以下是一个示例,演示如何用Python拆分和合并大的Excel文件。
import pandas as pd
dfs = pd.read_excel("path/to/large_file.xlsx", sheet_name=None)
chunks = [df for _,df in dfs.items()]
chunk_size = 500000
num_chunks = len(chunks)
for i,chunk in enumerate(chunks):
start = i * chunk_size
finish = start + chunk_size
sub_chunk_num = i // num_chunks
sub_chunk_filename = f"path/to/output/file_{sub_chunk_num}.xlsx
sub_chunk = chunk[start:finish]
sub_chunk.to_excel(sub_chunk_filename,index=None)
all_files = glob.glob("path/to/output/*.xlsx")
data_frames = []
for file in all_files:
df = pd.read_excel(file, index_col=None, header=None)
data_frames.append(df)
output_file = "path/to/output/large_file.xlsx"
pd.concat(data_frames, axis=0, ignore_index=True).to_excel(output_file)
总结
通过拆分成小的Excel文件和合并这些文件,我们可以轻松地存储和管理大量数据。同时还可以使用pandas的方法来处理这些数据,比如堆叠、合并等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python这样操作能存储100多万行的xlsx文件 - Python技术站