Python pandas介绍

2018/03/20 Python

pandas介绍

pandas是基于NumPy的一个Python数据分析包,主要目的是为了数据分析。它提供了大量高级的数据结构和对数据处理的方法。

pandas有两个主要的数据结构:Series和DataFrame。

pd.concat

Series

获取Series对象的索引或者数组内容

获取索引:obj.index

获取数组内容:obj.value

其中obj为Series对象

获取/重新赋值Series对象的单个数据

Series对象里的单个数据,和普通数组一样,通过索引获取对应的数据或者重新赋值。

索引可以是自己设置的索引,也可以是0,1,2这样的数字。

DataFrame

查看DataFrame的index、columns,values

frame.name / frame.columns / frame.values

修改列名

修改某个列名(可以随意修改个数):df=df.rename(columns = {‘old_name’:’new_name’})

修改所有列名(暴力求解):df.columns = [‘a’,’b’,’c’]

修改索引

修改索引

obj.set_index(keys)

obj指的是DataFrame对象。

这个key的值可以是序列类型;也可以是调用者的一个列名,即将某一列设为新数组的索引。

重新索引,index参数对行重新索引,columns参数对列重新索引。

obj.reindex(index=None,**kwargs)

obj指的是DataFrame对象。

新index是以0开始的递增整数列,原index会变成一个新的列。

obj.reset_index()

obj指的是DataFrame对象。

如果不需要原来的index中的值可以加drop = True。

obj = obj.reset_index(drop=True)

obj指的是DataFrame对象。

选择对象

pandas对象的index不限于整数,所以当使用非整数作为切片索引时,它是末端包含的

行列选择

obj[]只能进行行选择,或列选择,不能同时进行列选择,列选择只能是列名。

行选择

行可以直接通过[]选择,只是必须是数字范围或者字符串范围索引(不同于series只有数字或字符串也可以)。

obj[[True,False,True,False,True]],内部list必须和行数相同,可以选择指定的行

列选择

obj = obj[[‘user’, ‘check-in_time’, ‘location_id’]]

选择多列,obj为DataFrame对象。后面为选择的列名,只能用列名,不能用索引。

obj.ix[:,0:-1]

连续选择多列(选择除最后一列的所有列示例)。

obj[obj.columns[-1]]或者obj.ix[:,-1]

获取/重新赋值DataFrame对象的列数据

DataFrame不仅可以以字典索引的方式获取数据,还可以以属性的方法获取。

frame.name / frame[‘name’]

其中,frame为DataFrame对象。

获取/重新赋值DataFrame对象的行数据

以切片的方式获取,frame[0:3]会返回前三行数据。

通过标签来选择数据

frame.loc[:, [‘a’, ‘b’] ]

表示选取所有的行以及columns为a,b的列。

通过位置来选择数据

frame.iloc[1:2,1:2]

表示选取第一行第一列的数据(切片后面的值取不到)。

结合标签和位置的混合索引(结合loc和iloc的功能)

frame.ix[1]

表示选取第一行数据。

frame.ix[‘e’]

表述选取标签为‘e’的行数据。

使用条件来选择

frame[frame.c>0]

表示选择c列中大于0的数据。

drop_duplicates函数 DataFrame中函数

DataFrame.drop_duplicates(subset=None, keep=’first’, inplace=False)

说明:去重复行。subset用来指定特定的列,默认所有列。keep删除重复项并保留第一次出现的项目,可选“first”、“last”。inplace表示在原来数据上修改还是保留一个副本。

apply函数 DataFrame中函数

apply函数可以对DataFrame对象进行操作,既可以作用于一行或者一列的元素,也可以作用于单个元素

obj.apply(func, axis=0, args=(), **kwds)

obj指的是DataFrame对象。

groupby函数 DataFrame中函数

df.groupby(‘key1’)[‘data1’]是df[‘data1’].groupby(df[‘key1’])的语法糖。

df.groupby(‘key1’)[[‘data2’]]是df[[‘data2’]].groupby(df[‘key1’])的语法糖。

level参数

merge函数 pandas中函数

可以根据一个或多个键将不同DataFrame中的行连接起来

类似于SQL中的JOIN

通过键拼接列

res = pd.merge(left, right, on = ‘key’)

类似数据库操作中的联接,只有’key’属性值一样才联接到一起。

  • 默认以重叠的列名当做连接键。
  • 默认做inner连接(取key的交集),连接方式还有(left,right,outer),制定连接方式加参数:how=’‘。
  • 多键连接时将连接键组成列表传入,例:pd.merge(df1,df2,on=[‘key1’,’key2’]。
  • 如果两个对象的列名不同,可以分别指定,例:pd.merge(df1,df2,left_on=’lkey’,right_on=’rkey’)。
  • 以索引当做连接键,使用参数left_index=true,right_index=True(最好使用join)。

join函数 DataFrame函数

join方法提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

拼接列,主要用于索引上的合并

  • join方法默认为左外连接how=left。
  • 默认按索引合并,可以合并相同或相似的索引,不管他们有没有重叠列。
  • 可以连接多个DataFrame。
  • 可以连接除索引外的其他列。
  • 连接方式用参数how控制。
  • 通过lsuffix=’‘,rsuffix=’‘,区分相同列名的列。

Joining on index.

Joining key columns on an index.(列和index来join)

concat函数 pandas中函数

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner只有这两种)。与数据库不同的时concat不会去重,要达到去重的效果可以使用drop_duplicates方法

pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数。

drop函数 DataFrame、Series函数

删除Series的元素或DataFrame的某一行(列)的意思,通过对象的.drop(labels, axis=0)方法。

obj.drop(‘a’) 删除一行。

df.drop([‘oh’,’te’],axis=1) 删除一列。

删除任何包含NA值的行:data.dropna()

删除一整行的值都为NA:data.dropna(how=’all’)

在一行中有多少非空值的数据是可以保留下来的(行数据中至少要有 5 个非空值):data.drop(thresh=5)

data.dropna(subset=[‘title_year’]):subset参数允许我们选择想要检查的列。如果是多个列,可以使用列名的list作为参数。如果指定列为NA,则删除这行。

resample函数

只有在index为date类型的时候才能用。

层次化索引(hierarchical indexing)

多层索引对象的索引与切片操作。

Series的操作

【重要】对于Series来说,直接中括号[]与使用.loc()完全一样,因此,推荐使用中括号索引和切片。

(1) 索引

(2) 切片

DataFrame的操作

(1) 可以直接使用列名称来进行列索引

(2) 使用行索引需要用ix(),loc()等函数

【极其重要】推荐使用loc()函数

注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!

唯一值、值计数、成员资格方法

  • isin:计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组。
  • unique:计算Series中的唯一值数组,按发现的顺序返回。
  • value_counts:返回一个Series,其索引为唯一值,其值为频率,按计数值降序排列这类方法可以从一维Series的值中抽取信息。

value counts函数

value_counts还是一个顶级pandas方法,可用于任何数组或序列:pd.value_counts(obj.values, sort=False)。

参考

利用Python进行数据分析 pandas基础: Series和DataFrame的简单介绍

pandas库介绍之DataFrame基本操作

Pandas中DateFrame修改列名

Pandas 学习笔记

pandas(五)——层次化索引

pandas层次化索引

pandas小记:pandas索引和选择

python pandas dataframe 行列选择,切片操作

Python 数据分析包:pandas 基础

Pandas中resample方法详解

pandas 时间序列resample

【pandas】DataFrame 数据合并,连接(merge,join,concat)

pandas教程:agg分组多种计算 level =

pandas官方api

【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)

Search

    Table of Contents