数据分析过程中,有时候接触的数据集会非常大。例如,打算在Kaggle(Kaggle是一个数据建模和数据分析竞赛平台。)竞赛平台上寻找一些数据集来练习,但是发现部分数据集是几G甚至几十G的。
针对这种大型数据集如果直接读取可能会造成运行失败或者直接导致系统瘫痪。下面使用Pandas对大型数据集进行分批读取,同时介绍几种常用方法供大家参考。
例如,笔者从数据库中导出的CSV文件有2G多,如图1所示。
分批导入后运行效果如图2和图3所示。由于数据量非常大且篇幅有限,这里仅展示部分数据。从输出结果得知:数据每100万行输出一次。
对于大型数据集的读取,推荐使用以下4种方法:
(1)限定读取的列数
在一个CSV文件中往往存在很多列数据,但并不是所有的列都是我们需要的,此时如果将所有的列都读取出来,无疑会减慢数据读取速度。因此在读取数据的时候,通过Pandas的read_csv()方法的usecols参数指定需要读取的列,以提高读取效率。例如,仅读取“图书名称”和“销量”,代码如下:
df
(2)限定读取的行数
通过限定读取的行数来控制一次性读取数据的大小,主要使用read_csv()方法的nrows参数,该参数用于设置读取的行数。例如,仅读取前1000行数据,代码如下:
df = pd.read_csv('mrbook.csv',encoding = 'gbk',nrows=10,usecols=['图书名称','销量'])
(3)分块读取数据
分块读取数据是本实例的重点。read_csv()方法有一个非常实用的参数——chunksize参数,该参数可以指定一个块的大小(即每次读取多少行),返回一个可迭代的TextFileReader对象。例如分块(每100万行读取一次)读取一个2G多的CSV文件,代码如下:
df=pd.read_csv('全盘文件索引.csv',chunksize=1000000)
for chunk in df:
print(chunk)
(4)先读取头部数据和尾部数据
当刚刚得到一个很大的CSV文件时,迫切想了解数据的情况,此时推荐使用DataFrame对象的head()方法和tail()方法,先查看前5行数据和最后5行数据。例如下面的代码:
df.head()
df.tail()
说明:head()方法和tail()方法默认是查看5行数据,如果想查看更多的数据可以指定行数,如head(20),查看前20行数据。
人人都应掌握的数据分析技能你究竟了解多少?更多数据分析内容,可参阅
全彩版《Python数据分析从入门到实践》京东满100减50
《Python数据分析从入门到实践(全彩版)》这本书是2020年6月最新出版,本书全面介绍了Python数据处理、数据分析大神Pandas,数据可视化常用库Matplotlib和Seaborn,图解数组计算模块快速了解Numpy,以及机器学习Scikit-Learn的常用回归分析和聚类分析,这两个模型也是应聘时经常出现的题目。
本书包括230个快速示例、17个案例和4大项目。
案例1:Excel多表合并
案例2:分析股票行情数据
案例3:双Y轴可视化数据分析图表的实现
案例4:堆叠柱形图可视化数据分析图表的实现
案例5:颜色渐变饼形图的实现
案例6:等高线图的实现
案例7:统计双色球中奖数字热力图
案例8:NumPy实现正态分布
案例9:NumPy用于图像灰度处理
案例10:对比分析各品牌销量表现TOP10
案例11:京东电商单品销量同比增长情况分析
案例12:单品销量定比分析
案例13:单品销量环比增长情况分析
案例14:产品贡献度分析
案例15:学生成绩性别差异分析
案例16:广告展现量与费用成本相关性分析
案例17:年增长趋势和季节性波动分析
项目一:网站App平台注册用户分析(MySQL版)
项目二:京东电商销售数据分析与预测(回归分析的应用)
项目三:二手房房价分析与预测系统(回归分析的应用)
项目四:Python实现客户价值分析(聚类分析的应用)
原创不易,如果觉得有点用,希望可以随手 点个赞,拜谢各位老铁。