Python 大文件拆分,分类,存储

一、对可迭代对象简易理解

我们以 hello word字符串进行试验:

————————————————————————————————————————————————————————
# method1:
lst_iter = iter('hello world')   # 用iterate() 生成迭代器
for i in lst_iter:
    print(i)
————————————————————————————————————————————————————————
# method2:
lst_iter = iter('hello world')
loop = True
while loop:
    try:
        print(next(lst_iter))
    except StopIteration:
        loop = False
————————————————————————————————————————————————————————
# method1 和 method2 运行结果一致为:
h
e
l
l
o
 
w
o
r
l
d

二、进行大文件的拆分,存储

需要使用 pandas模块中 chunksize或者iterator参数, 还需使用groupby() 方法。

# 演示案例  <可迭代对象,进行遍历>
lst_iter = iter('hello')
print(next(lst_iter))
print('***********************')
for i in lst_iter:
    print(i)
————————————————————————————————————————————————————————
# 运行结果
h
***********************
e
l
l
o
import pandas as pd
import numpy as np

# 逐步读取文件
table = pd.read_csv(r'D:\Program Files\vscodeworkspace\激光雷达\
原始数据\WindSpeed20181028.csv', index_col=0, chunksize=1600)

''' 对存储文件的数据进行重新写入,防止重复执行,追加在原有数据上 '''
df = next(table)
groupby = df.groupby(by='Distance')                  # 分组
for value, group in groupby:
    filename = './拆分数据/' + str(value) + '.csv'   # 命名
    ''' 取出第一个 部分数据,写入保存 header '''
    group.to_csv(filename, sep=',', mode='w')        # 存储

for df in table: 
    groupby = df.groupby(by='Distance')
    for value, group in groupby:
        filename = './拆分数据/' + str(value) + '.csv'
        ''' for 循环追加不需要 header,需要申明 '''
        group.to_csv(filename, sep=',', header=None, mode='a')  # 存储 

参考

撰写 参考了 python使用chunk进行大文件的读写,代码如下:

# python使用chunk进行大文件的读写
reader = pd.read_csv('test.csv', iterator=True,low_memory=False)
loop = True
chunkSize = 100000
chunks = []
while loop:
    try:
        chunk = reader.get_chunk(chunkSize)
        chunks.append(chunk)
    except StopIteration:
        loop = False
        print("迭代停止。")
df = pd.concat(chunks, ignore_index=True)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值