我如何使用 Pandas 将 33 GB 的数据集转换为 3 GB 的文件?

bluesky1年前 ⋅ 983 阅读
作为AI语言模型,我无法直接访问您的电脑或数据,因此无法提供特定的代码或方法来解决您的问题。但是,以下是一些可能有帮助的一般建议:

1. 选择您需要的列:如果您只需要部分列以进行分析,则可以使用 Pandas 的 `read_csv()` 函数来选择要读取的列。这将减少加载和处理的数据量,从而减小文件的大小。例如:

```
import pandas as pd
 
# 选择需要的列和行
df = pd.read_csv('large_file.csv', usecols=['col1', 'col2', 'col3'], nrows=10000)
 
# 保存所有选定列
df.to_csv('small_file.csv')
```

2. 减小数据类型:默认情况下,Pandas 可能会自动为每列选择最适合的数据类型。如果您需要更快地处理数据而可以牺牲一些准确性,您可以将数据类型更改为更小的类型,例如使用整数类型而不是浮点类型存储数据。例如:

```
import pandas as pd
 
# 把指定列的数据类型为整型
dtypes = {'col1': 'int32', 'col2': 'int16', 'col3': 'int8'}
 
# pandas 读取数据
df = pd.read_csv('large_file.csv', dtype=dtypes)
# 保存 pandas 数据(列的数据类型已为整型)
df.to_csv('small_file.csv', index=False)
```

3. 分批次处理数据:如果您无法在一次加载中处理整个数据集,则可以将其分成多个较小的数据集并分别处理它们。这可以通过使用 Pandas 的 `read_csv()` 函数中的 `chunksize` 参数来实现。例如:

```
import pandas as pd
 
# 指定块大小和需要的列
chunksize = 1000000
columns = ['col1', 'col2']
 
# 逐块处理数据
for chunk in pd.read_csv('large_file.csv', chunksize=chunksize, usecols=columns):
    # 处理块的数据
    processed_chunk = some_processing_function(chunk)
 
    # 保存处理后的数据
    processed_chunk.to_csv('small_file.csv', mode='a', header=False, index=False)
```

请注意,这是一个简单的示例,并且您需要根据实际情况进行修改。

全部评论: 0

    相关推荐