#********** Begin **********# #1.导入pandas包 #2.read_excel()函数读取“一、车次上车人数统计表.xlsx”中的数据,用一个数据框df1来存储 #3.通过read_table()函数可以读取"txt1.txt"文件中的数据(不带表头),用一个数据框df2来表示 #4.通过read_csv()函数读取用分块读取的方式读取“data.csv”文件,每次读取20000行,并输出每次读取的数据集行数 #5.输出格式为“第n次读取数据规模为:20000 /n (20000, 列数)” #在函数中编写程序 def return_values(): reader = pd.read_csv(...) k=0; names = locals()#设置全局变量 for i in reader: names['A%s'%k]=pd.DataFrame(i)#创建A1~Ak个变量,分别保存各分块 print('第'+str(k)+'次读取数据规模为:',len(i)) print(i.shape) #********** End **********#
时间: 2025-06-01 19:10:18 浏览: 24
以下是实现您需求的完整代码及解释:
### 实现代码
```python
import pandas as pd
def return_values():
# 1. 导入pandas包
# 已在函数外导入
# 2. 使用 read_excel() 函数读取 Excel 文件数据
df1 = pd.read_excel("一、车次上车人数统计表.xlsx")
# 3. 使用 read_table() 函数读取文本文件数据(不带表头)
df2 = pd.read_table("txt1.txt", header=None)
# 4. 使用分块方式读取 CSV 文件
chunk_size = 20000 # 每次读取 20000 行
reader = pd.read_csv("data.csv", chunksize=chunk_size)
k = 0 # 计数器,用于命名分块 DataFrame
names = locals() # 设置局部变量存储分块 DataFrame
for chunk in reader:
names[f'A{k}'] = pd.DataFrame(chunk) # 创建 A0, A1, ..., Ak 变量保存各分块
print(f"第 {k} 次读取数据规模为:{len(chunk)}") # 输出每次读取的数据行数
print(chunk.shape) # 输出每次读取的数据集形状 (行数, 列数)
k += 1 # 更新计数器
# 调用函数
return_values()
```
---
### 代码解释
1. **导入 `pandas` 包**
在 Python 中,`pandas` 是一个强大的数据分析库。我们通过 `import pandas as pd` 将其导入,并使用别名 `pd` 方便后续调用。
2. **读取 Excel 文件**
使用 `pd.read_excel()` 函数读取名为 `"一、车次上车人数统计表.xlsx"` 的 Excel 文件,并将数据存储到 `df1` 数据框中。
3. **读取文本文件**
使用 `pd.read_table()` 函数读取名为 `"txt1.txt"` 的文本文件。由于该文件没有表头,我们在参数中指定 `header=None`,以确保正确读取数据,并将其存储到 `df2` 数据框中。
4. **分块读取 CSV 文件**
- 使用 `pd.read_csv()` 函数的 `chunksize` 参数实现分块读取。`chunksize=20000` 表示每次读取 20000 行。
- 循环遍历 `reader` 对象,每次获取一个分块数据(`chunk`),并将其存储到动态生成的变量 `A0`, `A1`, ..., `Ak` 中。
- 使用 `print()` 输出每次读取的数据规模和形状。
5. **局部变量管理**
使用 `locals()` 动态创建变量名 `A0`, `A1`, ..., `Ak`,分别存储每个分块数据。
---
### 注意事项
- 确保工作目录下存在以下文件:
- `"一、车次上车人数统计表.xlsx"`
- `"txt1.txt"`
- `"data.csv"`
- 如果 `"data.csv"` 文件非常大,分块读取可以有效避免内存不足的问题。
- 动态变量名的创建虽然方便,但在实际项目中建议使用列表或字典来存储分块数据,以便更清晰地管理和操作。
---
### 输出示例
假设 `"data.csv"` 文件包含 60000 行数据,分块大小为 20000,则输出如下:
```
第 0 次读取数据规模为:20000
(20000, 列数)
第 1 次读取数据规模为:20000
(20000, 列数)
第 2 次读取数据规模为:20000
(20000, 列数)
```
---
###
阅读全文
相关推荐













