0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

pandas读取csv文件有什么方法和注意点?

8nfr_ZTEdevelop 来源:未知 作者:易水寒 2018-07-21 10:00 次阅读

这篇文章介绍了利用数据分析工具pandas读取csv文件的方法和注意点,便于迅速过渡到数据处理阶段。

pandas是一个高效的数据分析工具。基于其高度抽象的数据结构DataFrame,几乎可以对数据进行任何你想要的操作。

由于现实世界中数据源的格式非常多,pandas也支持了不同数据格式的导入方法,本文介绍pandas如何从csv文件中导入数据。

从上图可以看出,我们要做的工作就是把存储在csv格式中的数据读入并转换成DataFrame格式。pandas提供了一个非常简单的api函数来实现这个功能:read_csv()。

1. 通过read_csv接口读入csv文件中的数据

下面是一个简单的示例:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH)

print(df.head(5))

只要简单地指定csv文件的路径,便可以得到DataFrame格式的数据df。对于理想情况下的数据,导入过程就是这么简单!

下面考虑这种情况:假设csv文件头部有几个无效行,那么打印出来的结果可能如下所示:

1 2 3 4

0 datetime host hit volume

12018-07-2409:00:00 weibo.com 20 1020

22018-07-2509:00:00 qq.com no20 1028

32018-07-2619:00:00 sina.com 25 1181

42018-07-2721:00:00 sohu.com 15 4582

pandas把【1,2,3,4】这组无效数据当作了column name;而实际上,我们更偏向于将【datetime,host,hit,volume】这组数据当作column name。对于这种情况,read_csv()函数提供了一个参数:skiprows,用于指定跳过csv文件的头部的前几行。在这里,我们跳过1行即可。

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH, skiprows=1)

print(df.head(5))

得到的结果如下所示:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com no20 1028

22018-07-2619:00:00 sina.com 25 1181

32018-07-2721:00:00 sohu.com 15 4582

2. 处理csv文件中的无效数据

pandas可以自动推断每个column的数据类型,以方便后续对数据的处理。还以上文中的数据为例,通过如下代码:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH)

print(df.head(5))

print('datatype of column hit is: '+ str(df['hit'].dtypes))

得出的结果:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com 20 1028

22018-07-2619:00:00 sina.com 25 1181

32018-07-2721:00:00 sohu.com 15 4582

datatype of column hit is: int64

pandas将hit这一列的数据类型判定为了int64,这显然方便未来我们对于该列数据的运算。但是在实际情况中,我们经常会面临数据缺失的问题,如果出现这种情况,我们往往会用一些占位符来表达。假设,我们用missing这个占位符来表示数据缺失,仍使用上述代码,来探索下会发生些什么:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com 20 1028

22018-07-2619:00:00 sina.com missing missing

32018-07-2721:00:00 sohu.com 15 4582

datatype of column hit is:object

由于hit这一列中出现了missing这个字符串,pandas将hit这一列的数据类型判断成了object。这会给我们对该列数据的运算带来影响。例如,假设我们要计算hit列前两行数据的和,代码如下:

print(df['hit'][0]+ df['hit'][1])

结果是:

2020

本来我们想要的是数学运算结果,但得到的却是一个字符串拼接结果。这就是由于数据类型判断失误带来的严重影响。对于这种情况,read_csv()函数也提供了一个简单的处理方式,只需要通过na_value参数指定占位符,pandas便会在读入数据的过程中自动将这些占位符转换成NaN,从而不影响pandas对column数据类型的正确判断。示例代码:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH, skiprows=0, na_values=['missing')

print(df.head(5))

print('datatype of column hit is: '+ str(df['hit'].dtypes))

print(df['hit'][0]+ df['hit'][1])

运行结果如下:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20.01020.0

12018-07-2509:00:00 qq.com 20.01028.0

22018-07-2619:00:00 sina.com NaN NaN

32018-07-2721:00:00 sohu.com 15.04582.0

datatype of column hit is: float64

40.0

可以看到,pandas将数据集中的missing单元全部转换为了NaN,并成功判断出hit这一列的数据类型。

3. 总结

通过一个简单的read_csv()函数,实际可以做到如下几件事:

通过指定的文件路径,从本地读取csv文件,并将数据转换成DataFrame格式

更正数据集的头部(column)

正确处理缺失数据

推断每一列的数据类型

当然,read_csv()函数还有一系列其他参数来应对各种情况,遇到具体问题的同学可参考其接口指南。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据处理
    +关注

    关注

    0

    文章

    595

    浏览量

    28556
  • 数据分析
    +关注

    关注

    2

    文章

    1446

    浏览量

    34050
  • csv
    csv
    +关注

    关注

    0

    文章

    39

    浏览量

    5819

原文标题:干货 | pandas读取csv文件数据的方法及注意点

文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    c语言读写表格(csv)文件 读取csv文件示例

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列
    的头像 发表于 06-08 09:22 6537次阅读
    c语言读写表格(<b class='flag-5'>csv</b>)<b class='flag-5'>文件</b>  <b class='flag-5'>读取</b><b class='flag-5'>csv</b><b class='flag-5'>文件</b>示例

    Python利用pandas读写Excel文件

    使用pandas模块读取Excel文件可以更为方便和快捷。pandas可以将Excel文件读取
    的头像 发表于 12-16 11:22 1336次阅读
    Python利用<b class='flag-5'>pandas</b>读写Excel<b class='flag-5'>文件</b>

    labview如何读取以制表符分割的csv文件

    把txt文件后缀名改为csv就得到以制表符分割的csv文件读取之后需要对数据进行一些处理 删除和加入一些数据之后另存为txt
    发表于 04-01 10:51

    LabVIEW读取.CSV文件

    .CSV文件其实也是一种文本文件,跟.xsl文件的区别在于分割符不同,.CSV以逗号(英文)分割,.xsl以tab分割,使用
    发表于 04-07 17:52

    labview读取动态.csv文件时是隔一段时间读取相对应的数据

    要求:在读取动态.csv文件时是隔一段时间读取举个例子说明,如图:1.第1次读取csv时,数据从
    发表于 06-10 11:19

    csv格式文件读取问题?

    本帖最后由 金大大 于 2016-11-14 19:48 编辑 现有一个4万行数字的csv格式的文件,使用读取电子表格文件控件读取,但
    发表于 11-12 23:42

    写入.csv文件的问题

    嗨Vee用户,我一个Vee测试,我从.csv文件读取了许多参数,执行测试循环,并在每个循环结束时将结果存储在another.csv
    发表于 10-09 14:55

    成功解决pandas无法读取中文文件的问题

    成功解决pandas无法读取中文文件的问题
    发表于 12-21 10:30

    labview如何自动读取文件夹中的若干个数据(csv文件

    刚学习labview,希望了解labview如何自动读取一个文件夹中的若干个csv文件,即完成检测cs
    发表于 10-16 18:10

    TensorFlow csv文件读取数据(代码实现)详解

    大多数人了解 Pandas 及其在处理大数据文件方面的实用性。TensorFlow 提供了读取这种文件方法。前面章节中,介绍了如何在 Te
    发表于 07-28 14:40

    如何通过pandas读取csv文件指定的前几行?

    今天小编给大家分享一篇Python威廉希尔官方网站 开发方面的文章,如何实现pandas读取csv文件指定的前几行,喜欢Python开发的小伙伴下面就随小编一起来了解一下吧。
    发表于 09-19 17:43 16次下载

    读取公盘文件方法

    读取公盘文件方法
    发表于 11-07 11:27 0次下载

    介绍Python中常用的文件读取方法以及应用示例

    ython 文件读取是 Python 语言中的基本操作之一。在编写Python 程序时,我们经常需要读取不同的文件,例如文本文件
    的头像 发表于 04-27 09:16 1061次阅读

    如何使用Python和pandas读取、写入文件

    在本文中,我将介绍如何使用 Python 和 pandas读取、写入文件。 1、安装 pip install pandas 2、读取 i
    的头像 发表于 09-11 17:52 1188次阅读

    Python教你用 Rows 快速操作csv文件

    Rows 是一个专门用于操作表格的第三方Python模块。 只要通过 Rows 读取 csv 文件,她就能生成可以被计算的 Python 对象。 相比于 pandas 的 pd.rea
    的头像 发表于 10-21 10:18 605次阅读