Pandas-DataFrame基础知识点总结

DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。

dataframe保存为csv dataframe保存为文件dataframe保存为csv dataframe保存为文件


dataframe保存为csv dataframe保存为文件


dataframe保存为csv dataframe保存为文件


DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。这里主要介绍这两种方式。

根据字典创建

DataFrame的行索引是index,列索引是columns,我们可以在创建DataFrame时指定索引的值:

使用嵌套字典也可以创建DataFrame,此时外层字典的键作为列,内层键则作为索引:

我们可以用index,columns,values来访问DataFrame的行索引,列索引以及数据值,数据值返回的是一个二维的ndarray

读取文件

其他创建DataFrame的方式有很多,比如我们可以通过读取mysql或者mongoDB来生成,也可以读取json文件等等,这里就不再介绍。

在DataFrame的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。

我们可以根据列名来选取一列,返回一个Series:

我们还可以选取多列或者多行:

当然,在选取数据的时候,我们还可以根据逻辑条件来选取:

pandas提供了专门的用于索引DataFrame的方法,即使用ix方法进行索引,不过ix在的版本中已经被废弃了,如果要是用标签,使用loc方法,如果使用下标,使用iloc方法:

修改数据

可以使用一个标量修改DataFrame中的某一列,此时这个标量会广播到DataFrame的每一行上:

也可以使用一个列表来修改,不过要保证列表的长度与DataFrame长度相同:

可以使用一个Series,索引、切片此时会根据索引进行匹配:

重新索引

使用reindex方法对DataFrame进行重新索引。对DataFrame进行重新索引,可以重新索引行,列或者两个都修改,如果只传入一个参数,则会从新索引行:

丢弃指定轴上的值

可以使用drop方法丢弃指定轴上的值,不会对原DataFrame产生影响

算术运算

DataFrame在进行算术运算时会进行补齐,在不重叠的部分补足NA:

可以使用fill_value方法填充NA数据,不过两个df中都为NA的数据,该方法不会填充:

函数应用和映射

numpy的元素级数组方法,也可以用于作Pandas对象:

另一个常见的作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。

元素级的Python函数也是可以用的,使用applymap方法:

排序和排名

对于DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序

DataFrame也可以按照值进行排序:

汇总和计算描述统计

DataFrame中的实现了sum、mean、max等方法,我们可以指定进行汇计的轴,同时,也可以使用describe函数查看基本所有的统计项:

DataFrame也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方矩阵,同时DataFrame也可以与Series求解相关系数。

处理缺失数据

Pandas中缺失值相关的方法主要有以下三个:

isnull方法用于判断数据是否为空数据;

fillna方法用于填补缺失数读取文件生成DataFrame最常用的是read_csv,read_table方法。该方法中几个重要的参数如下所示:据;

dropna方法用于舍弃缺失数据。

上面两个方法返回一个新的Series或者DataFrame,对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数:

对DataFrame来说,dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。

DataFrame填充缺失值可以统一填充,也可以按列填充,或者指定一种填充方式:

python 怎么读csv文件

什么是CSV

典型的可处理的csv文件,通常含有表头,也就是每列的列名。这样一来,每一行的内容就可以被当作是以表头为key的字典。于是可以使用csv定义的类:

填充数据只能按行填充,此时只能对行进行重新索引:

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', args, kwds)

下面是的例子(Python 3)。我们看到,对于csv文件的内容,我们可以通过相应的tag,也就是字典的key来读取。

在实际使用过程中,为了分离代码和方便阅读,可以先把读取的内容转存到列表,随后再根据各个key进行分开处理(针对多列的情况)。

就是内容用逗号隔开,后缀是‘.csv’的文件。它可以被任何一个文本编辑器打开。如果用excel打开,它又可以是这样的:

END

读CSV

典型的可处理的csv文件,通常含有表头,也就是每列的列名。这样一来,每一行的内容就可以被当作是以表头为key的字典。于是可以使用csv定义的类:

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', args, kwds)

下面是的例子(Python 3)。我们看到,对于csv文件的内容,我们可以通过相应的tag,也就是字典的key来读取。

在实际使用过程中,为了分离代码和方便阅读,可以先把读取的内容转存到列表,随后再根据各个key进行分开处理(针对多列的情况)。

Python 2.7.13 (default, Jan 19 2017, 14:48:08)

[GCC 6.3.0 20170118] on linux2

Type "", "copyright", "credits" or "lnse" for more rmation.

>>> import csv

>>> (csv)

可以使用pandas比较方便:

import pandas as pd

csvframe = pd.read_csv('myCSV_01.csv', header=None)