经常忘记怎么操作,还经常需要用到这个包,只好记下来了。
pandas读取csv文件
官网地址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
这个函数里面的参数很多很多,但是日常用的就是
pandas.read_csv(filepath_or_buffer,header='infer',index_col=None,usecols=None,nrows=None,na_values=None,)
filepath_or_buffer
:.csv
文件的路径地址或者URL
地址header
: int, list of int, default ‘infer’,infer
表示自动推断文件里是否有表头,一般看文件第一行与后面行的文件类型是否相同,header=2
表示设置第2行为表头,也可以设置多行为表头。这个参数要解决的问题是将哪一行或者哪几行设置为header
,并且忽略之前的数据;index_col
: int, str, sequence of int / str, or False, default None,index_col=2
表示将第2列的值设置为index
列,index_col
的类型为str
时,str
是属于header
里的,这个参数要解决的问题就是将哪一列或者是哪几列设置为index
;usecols
: list-like or callable, optional,可选参数,选择读取部分列的数据,可以是整型列表,字符串列表甚至是满足某些条件的函数,这个函数的输入是header
所在的那一行;nrows
: int, optional, 读取的行数,适合用于较大的文件;na_values
: scalar, str, list-like, or dict, optional,要识别为NA/NaN的其他字符串。如果dict通过,则指定每列NA值。比较适用与数据清洗。
举例:
import pandas as pd
data = pd.read_csv('./train_Labels.csv')
以上参数设置为默认值,得到的结果为:
data = pd.read_csv('D:/trainLabels.csv',header= 0,usecols=lambda x: len(x)>=5,nrows=10,na_values=[0,' ','10_left'])
pandas写入csv文件
pandas.DataFrame.to_csv(path_or_buf=None,header=True, index=True,)
path_or_buf
: str or file handle, default None,保存文件的路径和名字;header
: bool or list of str, default True,是否存在表头,或者重命名表头;index
: bool, default True,是否写入index
。
DataFrame框架中常用函数
官网地址:https://pandas.pydata.org/docs/reference/frame.html
DataFrame.keys()
在csv
文件中对应的header
而非index
。
DataFrame.loc
和DataFrame.iloc
这两个函数实现的功能是一样的,都是对于数据的查找,推荐使用后者,因为其用法与numpy
中,矩阵的查找方式基本相同。其输入可以是
- 整数,例如5;
- 整数的列表或数组,如[4,3,0];
- 具有整数的切片对象,例如1:7;
- 布尔数组;
- 一个可调用函数,具有一个参数(调用序列或数据帧),并返回有效的索引输出(上述参数之一)。当你没有对调用对象的引用,但希望根据某个值进行选择时,这在方法链中非常有用。
具体例子参考官网:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc
DataFrame.insert(loc, column, value, allow_duplicates=False)
: 在指定位置插入一列到DataFrame
中。
DataFrame.join()
和DataFrame.update()
前者用来合并两个数据类型,后者用来更新其中一个的值。参见https://pandas.pydata.org/docs/reference/frame.html#combining-comparing-joining-merging
根据指定值筛选出所有的行
利用的函数是DataFrame.isin()
,官方文档是https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html,按行按列筛选都行。返回的是一个布尔型DataFrame,显示DataFrame的每个元素是否包含在值中。所以也可以直接取否。
data = data[data['level'].isin([0])]
可以筛选出所有level
值为0的行。
data = data[~data['level'].isin([0])]
可以刷选出所有level
值不为0的行。