美文网首页
pandas csv 百万数据

pandas csv 百万数据

作者: 西瓜惊梦 | 来源:发表于2020-05-26 01:58 被阅读0次
  • 起因: 工作需要处理百万数据,用WPS秒卡死.Mysql数据库虽然可以很好的处理一个表的字段更新问题,但是两个表级联更新也巨慢.百度了下,查到了python,特此记录下,也方便自己往后回查,因为技术不到家的原因,我把这个步骤拆开分成了3个脚本写,如果有大佬看我的文章,愿意教一下我怎么改进,再感激不尽了
  • 脚本一: 负责给目的表中那些直接从原始数据表粘贴的字段赋值
import pandas as pd
import csv 
# 读取原始数据FileName0.csv,chunksize每次处理的数,iterator是迭代的参数
f_reader = pd.read_csv('./filename.csv',iterator=True,chunksize=10000)
for chunk in f_reader:
  # print函数是领导问我进度的时候截图给他看用的,没有这个需求的可以直接删掉.
  print(chunk,'\n')
  # 把需要用到的字段取出来,可以直接继承的通过pop函数取出来
  # 不可以直接继承的,随便写一个值占位置(因为我后面会清空值为空的chunk)
  str1 = chunk.pop('str1')
  str2 = 'str2'
  # 清空chunk,然后将需要继承的字段重新写入chunk
  chunk.drop(chunk.index,inplace=True)
  chunk.insert(0,'str1_newname',str1)
  chunk.insert(1,'str2_newname',str2)
  # 清空chunk中值为空的列,然后写入新csv
  chunk = chunk.dropna(axis=1)
  chunk.to_csv('filename_result.csv',mode='a',header=True,index=None)
# 打印结束提示
print('success')
  • 脚本2: 字符串截取功能
import pandas as pd
import csv 
# 读取脚本1 生成的目标文件filename_result.csv
f_reader = pd.read_csv('./filename_result.csv',iterator=True,chunksize=10000)
for chunk in f_reader:
  print(chunk,'\n')
  # 提取想要截取字符串所在列
  SZD = chunk['SZD']
  # (int)强制转化,chunk['SZD']是Series对象无find方法,需要转化为str
  str_num = (int)(chunk['SZD'].str.find('号'))
  # find方法:能找到的话返回索引值,不能找到的话返回-1
  if str_num > 0 :   # 有可以截取的字符串才进行截取
    chunk['SZD'] = SZD.str[0:str_num]   
  chunk['SZD'].to_csv('2020_0526.csv',mode='a',header=True,index=None)
print(chunk,'\n')
 
  • 脚本3:多表级联更新功能,两个行循环
import pandas as pd
import csv 
# 读取脚本1 生成的目标文件filename_result.csv和其他文件file_other.csv
f_reader = pd.read_csv('./filename_result.csv',iterator=True,chunksize=1000)
f_reader1 = pd.read_csv('./file_ther.csv',iterator=True,chunksize=1000)
i = 0
# VLookup功能实现暂时还没有想好怎么写,暂定了几个研究方向,一:两个行循环实现[通过loc提取行数据,然后进行循环,但是这个思路我卡在了loc提取出来的数据是DataFrame类型]
# 二:apply函数,批量处理

  • 一些其他没用到但是以后可能用到的小功能
# 首先将他们进行字符串化,并得到其对应的布尔值
>>> bool = df.str.contains('Mr\.') #不要忘记正则表达式的写法,'.'在里面要用'\.'表示
>>> print('bool : \n', bool)
# 通过dataframe的基本操作将其选取出来:
>>> filter_data = df[bool]
>>> print('filter data : \n', filter_data)

相关文章

网友评论

      本文标题:pandas csv 百万数据

      本文链接:https://www.haomeiwen.com/subject/fohuahtx.html