Python-Pandas模块基础

一、Series结构

1、series对象的创建

 import pandas as pd
 s = pd.Series(data,index,dtype,copy)

2、查询访问

(1)按位置下标

 s[0]

(2)按行标签

 s['a']

3、常用属性

  • s.axes:返回行索引组成的列表。

  • s.dtype:返回s中数据的数据类型。

  • s.empty:判断s是否为空。

  • s.ndim:返回s的维度,Series对象是一维的,因此始终返回1。

  • s.size:返回s的长度。

  • s.values:返回s中数据组成的数组。

  • s.index:返回Rangeindex对象,用来描述索引的取值范围。

4、常用方法

  • s.head(行数n):返回series对象的前n行数据。

  • s.tail(行数n):返回series对象的后n行数据。

  • pd.isnull(series对象):返回series对象,该对象中的值若不存在/缺失,则该位置返回True,否则返回False。

  • pd.notnull(series对象):返回series对象,该对象中的值若存在/不缺失,则该位置返回True,否则返回False。

5、遍历

可直接使用for循环遍历Series对象。

 for value in s:
     print(value)

6、字符串处理

函数名称函数功能和描述
s.str.lower()将的字符串转换为小写。
s.str.upper()将的字符串转换为大写。
s.str.len()得出字符串的长度。
s.str.strip()去除字符串两边的空格(包含换行符)。
s.str.split()用指定的分割符分割字符串。
s.str.cat(sep="")用给定的分隔符连接字符串元素。
s.str.get_dummies()返回一个带有独热编码值的 DataFrame 结构。
s.str.contains(pattern)如果子字符串包含在元素中,则为每个元素返回一个布尔值 True,否则为 False。
s.str.replace(a,b)将值 a 替换为值 b。
s.str.count(pattern)返回每个字符串元素出现的次数。
s.str.startswith(pattern)如果 Series 中的元素以指定的字符串开头,则返回 True。
s.str.endswith(pattern)如果 Series 中的元素以指定的字符串结尾,则返回 True。
s.str.findall(pattern)以列表的形式返出现的字符串。
s.str.swapcase()交换大小写。
s.str.islower()返回布尔值,检查 Series 中组成每个字符串的所有字符是否都为小写。
s.str.issupper()返回布尔值,检查 Series 中组成每个字符串的所有字符是否都为大写。
s.str.isnumeric()返回布尔值,检查 Series 中组成每个字符串的所有字符是否都为数字。
s.str.repeat(value)以指定的次数重复每个元素。
s.str.find(pattern)返回字符串第一次出现的索引位置。

二、DataFrame结构

1、创建

 import pandas as pd
 df = pd.DataFrame(data, index, columns, dtype, copy)
 # 注意:使用字典创建df对象时,字典的值需要使用列表/series等可迭代对象。
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)

2、查询访问

(1)列形式访问

 df['列标签']

(2)行形式访问

①行标签访问
 df.loc['行标签']
 ​
 df.loc['行标签','列标签']
 ​
 df.loc['开始行标签':'结束行标签','开始列标签':'结束列标签']
②行位置访问
 df.iloc['行位置']
 ​
 df.iloc['行位置','列位置']
 ​
 df.iloc['开始行位置':'结束行位置','开始列位置':'结束列位置']

(3)指定行列标签访问

 df.reindex(index=['行标签列表'],columns=['列标签列表'])

(4)根据其他df的标签访问

 # method可选参数,用来填充元素值。pad/ffill 向前填充值;bfill/backfill 向后填充;nearest 从距离最近的索引值开始填充。
 # limit可选参数,用来控制填充的最大行数。
 df.reindex_like(df2,method,limit)

3、添加

(1)添加列

①列末尾追加指定值
 df['新列标签'] = 指定值
②列末尾追加原有列计算出的值
 df['新列标签'] = df['原列标签1']+df['原列标签2']
③指定位置添加指定值
 df.insert(index, column='新列标签', value=指定值)

(2)添加行

①行末尾追加df
 df.append(df2)

4、删除

(1)删除列

 # 方法一
 df.pop('列标签')
 ​
 # 方法二
 del df['列标签']

(2)删除行

 df.drop('行标签')

5、常用属性

  • df.T:行列转置。

  • df.axes:返回一个以RangeIndex对象和Index对象组成的列表。

  • df.dtypes:返回一个以每列数据的数据类型组成的Series对象。

  • df.empty:判断df对象是否为空。

  • df.ndim:返回df对象的维度。

  • df.shape:返回(行数, 列数)这样的一个元组。

  • df.size:返回df对象中的元素数量。

  • df.values:返回df中数据组成的数组。

6、常用方法

  • df.head(行数n):返回前n行数据。

  • df.tail(行数n):返回后n行数据。

  • df.shift(peroids,freq,axis,fill_value):移动peroids步,axis方向,fill_value填充缺失值。

7、描述性统计(聚合)

函数名称描述说明
df.count(axis=0)统计某个非空值的数量。
df.sum()求和
df.mean()求均值
df.median()求中位数
df.mode()求众数
df.std()求标准差
df.min()求最小值
df.max()求最大值
df.abs()求绝对值
df.prod()求所有数值的乘积。
df.cumsum()计算累计和,axis=0,按照行累加;axis=1,按照列累加。
df.cumprod()计算累计积,axis=0,按照行累积;axis=1,按照列累积。
df.corr()计算数列或变量之间的相关系数,取值-1到1,值越大表示关联性越强。
df.describe()显示于df数据列相关的统计信息摘要。

8、使用自定义函数

(1)操作整个DataFrame对象

 df.pipe(方法名,参数值)

(2)操作行或列

 df.apply(方法名,axis)

(3)操作单一元素

 df.applymap(方法名)

9、修改行/列标签名

 # inplace参数为False表示拷贝一份数据,并在拷贝的数据上重命名;若为True,则在原数据上重命名。
 df.rename(columns={'原列名':'新列明'},index={'原行名':'新行名'},inplace=False)

10、遍历

(1)使用for循环遍历

 # 使用for循环遍历df得到的是列标签。
 for column_name in df:
     print(column_name)

(2)内置迭代方法

①items():以列标签,列数据(key,value)的形式遍历
 for key,value in df.items():
     print(key,value)
②iterrows():以行标签,行数据(row_index,row)的形式遍历
 for row_index,row in df.iterrows():
     print(row_index,row)
③itertuples():返回一个迭代器,把df的每一行生成一个元组
 for row in df.itertuples():
     print(row)

11、排序

(1)按标签排序

 # ascending参数:默认为True,升序排序;为False时,降序排序。
 # axis参数:默认为0,按行标签排序;为1时,按列标签排序。
 df.sort_index(ascending=True,axis=0)

(2)按值排序

 # by参数:排序数列的df的列名。
 # kind参数:指定排序算法。quicksort快速排序,mergesort归并排序-最稳定的。
 df.sort_value(by='列名',kind='quicksort')
 df.sort_value(by=['列名1','列名2'],kind='quicksort')

12、去重

 # subset参数:要去重的列名,默认为None。
 # keep参数:first表示只保留第一次出现的;last表示只保留最后一次出现的;False表示删除所有重复项。
 # inplace参数:False表示去重后返回一个副本;True表示直接在原数据上删除。
 df.drop_duplicates(subset=['列名1','列名2','列名3'],keep='first',inplace=True)

13、设置显示样式

(1)样式设置方法

函数名称说明
pd.get_option('参数值')获取解释器的默认参数值。
pd.set_option('参数值')更改解释器的默认参数值。
pd.reset_option('参数值')解释器的参数重置为默认值。
pd.describe_option('参数值')输出参数的描述信息。
pd.option_context('参数值')临时设置解释器参数,当退出使用的语句块时,恢复为默认值。

(2)样式设置方法的参数

参数说明
display.max_rows最大显示行数,超过该值用省略号代替,为None时显示所有行。
display.max_columns最大显示列数,超过该值用省略号代替,为None时显示所有列。
display.expand_frame_repr输出数据宽度超过设置宽度时,表示是否对其要折叠,False不折叠,True要折叠。
display.max_colwidth单列数据宽度,以字符个数计算,超过时用省略号表示。
display.precision设置输出数据的小数点位数。
display.width数据显示区域的宽度,以总字符数计算。
display.show_dimensions当数据量大需要以truncate(带引号的省略方式)显示时,该参数表示是否在最后显示数据的维数,默认 True 显示,False 不显示。

14、--统计函数、窗口函数、聚合函数

15、--缺失值处理

16、--分组操作

17、merge()连接操作

merge()方法可以根据指定的键连接两个df。

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True)
参数名称说明
left/right两个不同的 DataFrame 对象。
on指定用于连接的键(即列标签的名字),该键必须同时存在于左右两个 DataFrame 中,如果没有指定,并且其他参数也未指定, 那么将会以两个 DataFrame 的列名交集做为连接键。
left_on指定左侧 DataFrame 中作连接键的列名。该参数在左、右列标签名不相同,但表达的含义相同时非常有用。
right_on指定左侧 DataFrame 中作连接键的列名。
left_index布尔参数,默认为 False。如果为 True 则使用左侧 DataFrame 的行索引作为连接键,若 DataFrame 具有多层 索引(MultiIndex),则层的数量必须与连接键的数量相等。
right_index布尔参数,默认为 False。如果为 True 则使用左侧 DataFrame 的行索引作为连接键。
how要执行的合并类型,从 {'left', 'right', 'outer', 'inner'} 中取值,默认为“inner”内连接。
sort布尔值参数,默认为True,它会将合并后的数据进行排序;若设置为 False,则按照 how 给定的参数值进行排序。
suffixes字符串组成的元组。当左右 DataFrame 存在相同列名时,通过该参数可以在相同的列名后附加后缀名,默认为('x','y')。
copy默认为 True,表示对数据进行复制。

18、concat()拼接操作

 pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False)
参数名称说明
objs一个序列或者是Series、DataFrame对象。一般是一个列表[df1,df2]。
axis表示在哪个轴方向上(行或者列)进行连接操作,默认 axis=0 表示行方向。
join指定连接方式,取值为{"inner","outer"},默认为 outer 表示取并集,inner代表取交集。
ignore_index布尔值参数,默认为 False,如果为 True,表示不在连接的轴上使用索引。
join_axes表示索引对象的列表。

19、随机抽样

 df.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
参数名称参数说明
n表示要抽取的行数。
frac表示抽取的比例,比如 frac=0.5,代表抽取总体数据的50%。
replace布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回。
weights可选参数,代表每个样本的权重值,参数值是字符串或者数组。
random_state可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据。
axis表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)。

20、文件读写

(1)csv文件读写

①读取csv文件
 df = pd.read_csv(filepath,sep,header=0,index_col,usecols,na_values,dtype)
参数名称参数说明
filepath要读取的文件路径+名称
sep指定分隔符,默认为逗号“,”。
header指定表头行。默认为0,表示第一行是表头。如果没有表头,设置为None。
index_col将某一列设置为索引。
usecols选择读取的列。可以是列名组成的列表,也可以是列索引组成的列表。
na_values指定哪些值应被视为NaN。可以是一个列表。
dtype指定列的数据类型。
②写入csv文件
 df.to_csv(path_or_buf=None,sep=',',columns=None,index=True,header=True,mode='w',encoding=None)
参数名称参数说明
path_or_buf文件路径或类似文件的对象。,默认为None。
sep指定分隔符,默认为逗号“,”。
columns要写入的列名列表,默认为None,表示写入所有列。
index是否将行索引写入文件,默认为True。
header是否写入列名,默认为True。
mode文件打开模式,默认为’w‘(写入),如果文件已存在,则会被覆盖。
encoding指定输出文件的字符编码,默认为None,使用系统默认编码。

(2)excel文件读写

①读取excel文件
 pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
               usecols=None, squeeze=False,dtype=None, engine=None,
               converters=None, true_values=None, false_values=None,
               skiprows=None, nrows=None, na_values=None, parse_dates=False,
               date_parser=None, thousands=None, comment=None, skipfooter=0,
               convert_float=True, **kwds)
参数名称说明
io表示 Excel 文件的存储路径。
sheet_name要读取的工作表名称。
header指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定 header = None。若将其设置 为 header=2,则表示将前两行作为多重索引。
names一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。
index_col用做行索引的列,可以是工作表的列名称,如 index_col = '列名',也可以是整数或者列表。
usecolsint或list类型,默认为None,表示需要读取所有列。
squeezeboolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters规定每一列的数据类型。
skiprows接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows需要读取的行数。
skipfooter接受一个列表,省略指定行数的数据,从尾部最后一行开始。
②写入excel文件
Ⅰ、写入到一个sheet页
 df.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
参数名称描述说明
excel_wirter文件路径或者 ExcelWrite 对象。
sheet_name指定要写入数据的工作表名称。
na_rep缺失值的表示形式。
float_format它是一个可选参数,用于格式化浮点数字符串。
columns指要写入的列。
header写出每一列的名称,如果给出的是字符串列表,则表示列的别名。
index表示要写入的索引。
index_label引用索引列的列标签。如果未指定,并且 hearder 和 index 均为为 True,则使用索引名称。如果 DataFrame 使用 MultiIndex,则需要给出一个序列。
startrow初始写入的行位置,默认值0。表示引用左上角的行单元格来储存 DataFrame。
startcol初始写入的列位置,默认值0。表示引用左上角的列单元格来储存 DataFrame。
engine它是一个可选参数,用于指定要使用的引擎,可以是 openpyxl 或 xlsxwriter。
Ⅱ、写入到多个sheet页中
 # 使用 ExcelWriter 保存文件,使用pd.ExcelWriter()方法创建ExcelWriter对象。
 with pd.ExcelWriter('example.xlsx') as writer:
     # 根据ExcelWriter对象,使用df.to_excel()方法将数据写入到excel中。
     df1.to_excel(writer, sheet_name='Sheet1', index=False)
     df2.to_excel(writer, sheet_name='Sheet2', index=False)
 pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs)
参数名称描述说明
path类型:str、path object 或 file-like object。说明:目标文件的路径或文件对象。
engine类型:str,默认 None。说明:写入文件所使用的引擎,例如 openpyxl。
date_format类型:str,默认 None。说明:日期列的格式。
datetime_format类型:str,默认 None。说明:日期时间列的格式。
mode类型:str,默认 ‘w’。说明:文件打开模式。'w' 表示写入模式,'a' 表示追加模式。
storage_options类型:dict,默认 None。说明:用于存储连接的额外选项。
if_sheet_exists类型:str,默认 None。说明:如果工作表已经存在,应采取的操作,包括 error、new、replace 或 none。
engine_kwargs类型:dict,默认 None。说明:传递给引擎的其它关键字参数。

21、索引操作

(1)读取文件时直接设置行索引

 # 通过index_col参数,可以直接将某列设置为行标签
 pd.read_csv('person.csv',index_col='列名')

(2)对df对象设置索引

 # 通过set_index()方法,可以直接将某列设置为行标签
 df.set_index('列名')

(3)重置df对象的索引

 df.reset_index()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值