pandas库随笔——Cheat Sheet与数据读取

由于自己是从R转Python,平时用惯了R对数据进行处理、转化等操作,如今过渡到Python上还有些许的不适应。但还是不得不感叹pandas的强大之处,一个库顶的上R中数个包合并在一起使用。

因为平时的使用比较杂,都是随用随查,所以在pandas库的使用上也是比较零碎,这里记录下分析一份数据,使用比较多的一些pandas的操作。

官方网站:http://pandas.pydata.org/


Cheat Sheet

首先粘贴下新手写码必备的cheatsheet:
pandas库随笔——Cheat Sheet与数据读取_第1张图片

pandas库随笔——Cheat Sheet与数据读取_第2张图片


数据读取

数据读取这部分非常不同于R,个人感觉非常便捷,并且使用起来也很顺手。读取csv 所使用的函数: read_csv, 其读取速度远远快过R中自带的函数 read.csv ,和data.table 包中 fread 有的一拼(虽然 fread 可能还是稍微快一点点),但pandas还有read_excel 这个函数可以直接读取 xlsxlsx 等类型的文件,这比R还需要调用一些包来读取快捷多了。

具体的一些操作如下,首先我们需要先将pandas库进行导入,通常操作都是as pd

import pandas as pd

然后我们就可以进行csv文件的读取了!


1、read_csv

df = pd.read_csv('myfile.csv')

这是最简单的读取方式,但是遇到很多奇奇怪怪的文件格式,就要修改其中的参数了。

1)encoding

编码问题,是MacOS、Lunix、Windows几个系统之间相互转化文件最容易出现的问题。通常,我们使用的编码是:utf-8,这样的编码在MacOS与Lunix系统中,通常是没有问题的,但是读取Windows中的文件一定要注意!,通常需要使用 encoding = 'mbcs' 才能正常读取文件,Windows很多都是ANSI编码。

关于编码问题,这个网址有详细的说明:https://docs.python.org/3/library/codecs.html#standard-encodings

另外这里再说个关于转码的小技巧(当然可以使用Python,用 encoding = 'mbcs' 进行读取,用 encoding = 'utf-8' 进行存储)。这里对我们的文件(csvtxt等)用记事本打开,然后点击另存为,在下方有一个编码:使用 UTF-8 或者 ANSI,总之是你目标的编码即可。

2)sep

默认我们的csv文件使用的是逗号分隔的,如果原本的数据不是csv格式,是用其它字符分隔的(例如空格),那我可以使用 sep = 其它分隔符号来进行修改。

3)header

另一个常用的参数是header =,函数默认是将文件的第一行作为每一列的列名,如果我们需要取消这个操作,也就是文件的第一行我们不令它变成列名,则需使用header = None。另外有个小技巧,就是原本我们的文件每一列有多个标题,我们可以设置一个list,比如:header = [0, 2],那么就表示将文件中的这些行作为列标题,在中间的行将被忽略掉(本例中数据第1,3行将被作为多级标题出现,第2行数据将被丢弃,真正的数据从第4行开始)。

4)names

那如果我们需要自己来定义列名,就需要使用类似names = ['身高', '体重']的操作,同时注意需要使用header=None

5)index_col

有时候,我们也希望文件中的第一列内容,不做为index,而是重新使用0~(n-1)来作为新的index,可以使用 index_col = False但是使用时需要注意,这样做,会顶掉最后一列数据!使得读取进来直接少了一列数据。 解决的方法是:我们还是使用 read_csv 正常读取,然后对读取进来的 df,使用df = df.reset_index(),可以直接使0~(n-1)作为我们的index,也就是行名。

关于 read_csv 中的参数,自己用到的就介绍到这里,还有更多的参数,可以参考官方说明文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html


2、read_excel

df = pd.read_excel('myfile.xlsx', 'Sheet1')

read_excel 的参数与前面的 read_csv 基本一致,就是要使用第二个参数,来指定读取的Sheet(通常默认都是'Sheet1',但建议读取之前,还是先看看第一个Sheet的名称是什么)。

其实也可以使用sheetname=[0,2],表示读取第一个和第三个sheet,跳过了第二个,因为sheet数目从0开始。这样读进来的其实是一个 OrderedDict ,里面包含两个DataFrame.,使用 df[0],就是我们读入的第一个Sheet。

后面会继续对pandas库中的其它函数进行介绍。

你可能感兴趣的:(Python)