《利用python进行数据分析》之文本数据的基本操作

本文参考《利用python进行数据分析》(原书第二版)第六章部分内容
为了方便我们完成本文数据的操作,我们首先需要进行CSV文件的建立,具体方法可以参考本链接:
https://blog.csdn.net/qq_44614524/article/details/99653255
(一)文本格式数据的读写:
我们初始创建的数据集如下:

   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo

首先我们介绍一些常用的pandas的解析函数,我们主要使用的是其中的第一个(read_csv)。其实第二个解析函数使用的频率也很高,从下图我们不难看出二者的差距知识默认分隔符的不同
在这里插入图片描述
1.读取该文件的话我们可以自己指定列名或者采用pandas自动分配默认的列名。

data = pd.read_csv('abc.csv', header = None)

结果如下:

   0   1   2   3        4
0  a   b   c   d  message
1  1   2   3   4    hello
2  5   6   7   8    world
3  9  10  11  12      foo

自定义列名代码如下:

data = pd.read_csv('abc.csv', names = ['one', 'two', 'three', 'four'])

输出结果如下:

  one two three     four
a   b   c     d  message
1   2   3     4    hello
5   6   7     8    world
9  10  11    12      foo

2.如果我们想传入一个正则表达式作为分隔符,假设我们传入的是\s+,那么我们可以得到:

data = pd.read_csv('abc.csv', sep = '\s+')

结果为:

  a,b,c,d,message
0   1,2,3,4,hello
1   5,6,7,8,world
2  9,10,11,12,foo

解析函数的附加参数很多时候会帮我们处理发生异常的文件,我们假设我们的原始数据第二行出现错误,那么我们可以选择跳过该行。

data = pd.read_csv('abc.csv', skiprows = [0, 2])

我们可以得到原始数据的第一行和第三行。注意:没有行列索引

   1   2   3   4 hello
0  9  10  11  12   foo

3.缺失值处理:我们人为将原始数据的hello去掉,再将原始数据进行打印出来看看会是什么样子:

   a   b   c   d message
0  1   2   3   4     NaN
1  5   6   7   8   world
2  9  10  11  12     foo

我们可以发现缺失值,pandas将他变成了NaN,有时候我们的缺失值不会显示,或者显示为NULL。
或者我们也可以使用布尔类型的方式来查看我们的元素是否缺失

print(pd.isnull(data))

输出结果为:

       a      b      c      d  message
0  False  False  False  False     True
1  False  False  False  False    False
2  False  False  False  False    False

那么返回值为True的位置上的元素就是缺失的。
下图为pandas中read_csv或者read_table函数的一些常用的参数。
在这里插入图片描述
在这里插入图片描述
4.、文件的写入:我们这里就采用原始的数据(把修改过的数据再修改回去),为了方便大家阅读,我们将修改后的(原始)数据打印出来。

   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo

4.1、我们可以将数据导出为逗号分隔的文件:

import pandas as pd
data = pd.read_csv('abc.csv')
print(data.to_csv())
#print(data)

输出如下:

,a,b,c,d,message
0,1,2,3,4,hello
1,5,6,7,8,world
2,9,10,11,12,foo

4.2、当然我们也可以采用其他的分隔符,我们将文件写入到sys.stout

print(data.to_csv(sys.stdout, sep = '|'))

输出结果就是我们采用 | 进行分隔的情况。

|a|b|c|d|message
0|1|2|3|4|hello
1|5|6|7|8|world
2|9|10|11|12|foo

4.3、我们会发现我们的行列索引也都被写入到其中,我们也可以选择禁止这两者的写入

print(data.to_csv(sys.stdout, index = False, header = False))

输出结果如下:

1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值