Pandas 目录
1、Pandas 基本语法(一)
2、Pandas 基本语法(二)
3、持续更新中…
Pandas 的基本语法(一)
pandas是一种Python数据分析的利器,是一个开源的数据分析包,最初是应用于金融数据分析工具而开发出来的,因此pandas为时间序列分析提供了很好的支持。pandas是PyData项目的一部分。
Series
简单地可以认为是一维数组
- Series 是一种类似一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。
DataFrame
简单地可以认为是二维数组
- 一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
删除行或列
- Pandas 提供了一个便捷的方法 drop() 函数来删除我们不想要的列或行。
df = df.drop(columns=['列名']) # drop colunms
df = df.drop(index=['行名']) # drop index
重命名列名或索引名
- 如果你想对 DataFrame 中的 columns 进行重命名,可以直接使用 rename(columns=new_names, inplace=True) 函数
- 如果你想对 DataFrame 中的 index 进行重命名,可以直接使用 rename(index=new_names, inplace=True) 函数
inplace = True ,表示在原数据表上修改,若值为False,则不对原数据表修改
处理索引
- reindex()与set_index()和reset_index()的用法
reindex()方法用于创建一个符合新索引的新对象
对于Series类型,调用reindex()会将数据按照新的索引进行排列,如果某个索引值之前不存在,则引入缺失值
DataFrame中,reindex()可以改变行索引和列索引
set_index()即设置索引。可以设置单索引和复合索引
DataFrame中的index 作为新索引
In []: indexed = df.set_index(['a', 'b'])
# indexed.index.name=None
indexed
Out[]:
c d
a b
bar one z 1.0
two y 2.0
foo one x 3.0
two w 4.0
# 如果觉得 a b 不美观,可以输入 indexed.index.name=None
reset_index(),它是set_index()的反操作,调用它分层索引的索引层级会被还原到列中
In []: df.reset_index()
Out[]:
a b c d
0 bar one z 1.0
1 bar two y 2.0
2 foo one x 3.0
3 foo two w 4.0
reset_index, 使索引按0,1,2,3,4开始递增
set_index ,将dataframe其中某列作为索引
reindex 设置新索引, 不存在的index对应的数据为Nan
数据切片loc & iloc
- loc: select by labels
data_loc = df.loc['行索引','列索引'] # Take a value
- iloc:select by position
data_iloc = df.iloc[num1,num2] # demo: df.iloc[:3,4]
- ix已经不被推荐使用,建议使用loc 和 iloc 实现ix,这里就不述说了
数据处理
- 去除含有NAN数据行/列
df = df.dropna() # default: axis=0, how='any' 意思是只要有nan,就删除一行,how='any|all';若how='all',则代表当一行全为nan,才会删除。若把axis=0改为1,则代表删除列。
# dropna()全部默认参数为:axis=0, how=‘any’, thresh=None, subset=None, inplace=False
# thresh = n,表示至少保留含有n个非nan值的行/列
# subset定义要在哪些列中查找缺失值
# inplace = True 表示在原数据表上修改,反之相反。
- 去重复的值
df = df.drop_duplicates() # 去除重复行
数据合并
提供了concat,merge,join和append四种方法用于dataframe的拼接,其区别如下:
- 函数concat()
-
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True) # comment objs:series,dataframe或者是panel对象构成的序列lsit axis:指明连接的轴向, {0/’index’(行), 1/’columns’(列)},默认为0 join:指明连接方式 , {‘inner’(交集), ‘outer(并集)’},默认为outer join_axes:自定义的索引。(可以指定按照哪个表中的索引为参考值)指明用其他n-1条轴的索引进行拼接, 而非默认join =’ inner’或’outer’方式拼接 keys:创建层次化索引。可以是任意值的列表或数组、元组数组、数组列表(如果将levels设置成多级数组的话) ignore_index=True:重建索引
两个DataFrame通过pd.concat(),既可实现行拼接又可实现列拼接,默认axis=0,join=‘outer’。表df1和df2的行索引(index)和列索引(columns)均可以重复。
-
函数merge()
-
DataFrame.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) # comment left和right:两个不同的DataFrame或Series how:连接方式,有inner、left、right、outer,默认为inner on:用于连接的列索引名称,必须同时存在于左、右两个DataFrame中,默认是以两个DataFrame列名的交集作为连接键,若要实现多键连接,‘on’参数后传入多键列表即可 left_on:左侧DataFrame中用于连接键的列名,这个参数在左右列名不同但代表的含义相同时非常有用; right_on:右侧DataFrame中用于连接键的列名 left_index:使用左侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN) right_index:使用右侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN) sort:默认为False,将合并的数据进行排序,设置为False可以提高性能 suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(’_x’, ‘_y’) copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能 indicator:显示合并数据中数据的来源情况
类似于关系型数据库的连接方式,可以根据一个或多个键将两张不同的DatFrame连接起来,由于默认how=‘inner’,故合并表仅保留key重名的行,不重名的行将被丢弃。( 备注: merge()只能完成两张表的连接,若有三个及以上表,需不断两两合并来实现)
该函数的典型应用场景: 两张表有相同内容的某一列(类似SQL中的主键),欲根据主键将两张表进行列拼接整合到一张表中,合并表的列数等于两个原数据表的列数和减去连接键的数量。
-函数join()
-
DataFrame.join(other, on=None, how='left', lsuffix=' ', rsuffix=' ', sort=False) # comment 参数的意义与merge方法基本相同,只是join方法默认为左外连接how=’left’
该函数的典型应用场景:无重复列名的两个表df1和df2 基于行索引进行列拼接,直接使用df1.join(df2)即可,无需添加任何参数,合并表的行数与left表相同,列数为left表+right表的列数之和,结果仅保留left表和right表中行索引相同的行,对列不做任何处理。如果两个表有重复的列名,需指定lsuffix, rsuffix参数。
-
函数append()
-
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None) # comment other: DataFrame or Series/dict-like object, or list of these The data to append. ignore_index : boolean, default False If True, do not use the index labels. verify_integrity : boolean, default False If True, raise ValueError on creating index with duplicates. sort: boolean, default None
append是concat的简略形式,只不过只能在axis=0上进行合并
后续持续更新…………
评论下方,分享md笔记