pandas读写csv文件 全攻略

经常忘记怎么操作,还经常需要用到这个包,只好记下来了。

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 Noneindex_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.locDataFrame.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的行。

其他待更新

猜你喜欢

转载自blog.csdn.net/Huang_Fj/article/details/120884333
今日推荐