seires 对象

1.创建一个series对象 Series()

语法:s=pd.Series(data,index=index)

参数说明: 

data:表示数据,支持Python字典、多维数组、标量值(即只有大小,没有方向的量。也就是说,只是一个数值,如s=pd.Series(5)) 

index:表示行标签(索引) 

返回值:Series对象

注意:data参数是多维数组时,index的长度必须与data长度一致,如果没有指定index参数,会自动创建数值型索引(从0~data数据长度-1)

2.手动设置series索引

手动设置series索引通过index参数设置,index=[]

3.series位置索引

位置索引是从0开始的,以此类推

import pandas as pd
s1=pd.Series([88,60,75])
print(s1[0])

运行结果 :88

注意:series不能使用[-1]定位索引

4.series标签索引

Series标签索引与位置索引方法类似,用[ ]表示,里面是索引名称,注意index的数据类型是字符串,如果需要获取多个标签索引值,用[[ ]]表示

5.series切片索引

用标签索引做切片,包头包尾(即包含索引开始位置的数据,也包含索引结束位置的数据)

用位置索引做切片,和list列表用法一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)

s2=pd.Series([88,60,75,34,68])
print(s2[1:4])

运行结果:1 60 2 75 3 34

6.获取series索引和值

获取Series索引和值主要使用Series的index和values方法

import pandas as pd
s1=pd.Series([88,60,75])
print(s1.index)
print(s1.values)

运行结果:RangeIndex(start=0, stop=3, step=1) [88 60 75]


DataFrame对象

1.创建一个DataFrame对象

语法:pandas.DataFrame(data,index,columns,dtype,copy)

参数说明: 

data:表示数据,可以是ndarray数组、Series对象、列表、字典等。 

index:表示行标签(索引)。

columns:列标签(索引)。 

dtype:每一列数据的数据类型,其与Python数据类型有所不同,如object数据类型对应的是Python的字符型

通过二维数组创建数据

data=[[1,2,3,4],[3,4,5,6],[4,5,6,7]]
index=[0,1,2]
columns=['语文','数学','英语','地理']
df=pd.DataFrame(data=data,index=index,columns=columns)
df

通过字典创建

pd.DataFrame({columns:[data数据]},index=[])

pd.set_option('display.unicode.east_asian_width',True)
df=pd.DataFrame({'语文':[110,106,88],'数学':[65,57,43],'英语':[78,89,90]
},index=[0,1,2])
df

注意:字典中的value值只能是一维数组或单个的简单数据类型,如果是数组,要求所有数组长度一致;如果是单个数据,则每行都添加相同数据。

2.导入外部数据

1.导入.xls或.xlsx文件   导入Excel文件 read_excel()

参数:

io:字符串,.xls或.xlsx文件路径或类文件对象。 

sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为0。字符串用于工作表名称,整数为索引表示工作表位置,字符串列表或整数列表用于请求多个工作表,为None时获取所有工作表

header:指定作为列名的行,默认值为0,即取第一行的值为列名。数据为除列名以外的数据;若数据不包含列名,则设置header=None。 

names:默认值为None,要使用的列名列表。 

index_col:指定列为行索引,默认值为None,索引0是DataFrame的行标签。

usecols:int、list列表或字符串,默认值为None。 如果为None,则解析所有列。 如果为int,则解析最后一列。 如果为list列表,则解析列号列表的列。 如果为字符串,则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。 

df2=pd.read_excel('1.xlsx',usecols=['姓名','生日','班级'])
df2

squeeze:/skwiːz/ 布尔值,默认值为False,如果解析的数据只包含一列,则返回一个Series。 

dtype:列的数据类型名称或字典,默认值为None。例如{'a':np.float64,'b':np.int32}。 

nrows:/rəʊz/导入前多少行

skiprows:省略指定行数的数据,从第一行开始。

skipfooter:省略指定行数的数据,从尾部数的行开始

df2=pd.read_excel('1.xlsx',sheet_name=1)
df2

2.导入.csv文件  .txt文件 read_csv()

常用参数说明: 

filepath_or_buffer:字符串,文件路径,也可以是URL链接。 

sep、delimiter:字符串,分隔符。

header:指定作为列名的行,默认值为0,即取第1行的值为列名。数据为除列名以外的数据;若数据不包含列名,则设置header=None。 

names:默认值为None,要使用的列名列表。 

index_col:指定列为索引列,默认值为None,索引0是DataFrame的行标签。 

usecols:int、list列表或字符串,默认值为None。 如果为None,则解析所有列。 如果为int,则解析最后一列。 如果为list列表,则解析列号列表的列。 如果为字符串,则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。 dtype:列的数据类型名称或字典,默认值为None。例如{'a':np.float64,'b':np.int32}

parse_dates:布尔类型值、int类型值的列表、列表或字典,默认值为False。可以通过parse_dates参数直接将某列转换成datetime64日期类型。例如,df1=pd.read_csv('1月.csv', parse_dates=['订单付款时间'])。 

parse_dates为True时,尝试解析索引。 

parse_dates为int类型值组成的列表时,如[1,2,3],则解析1、2、3列的值作为独立的日期列。 

parse_date为列表组成的列表,如[[1,3]],则将1、3列合并,作为一个日期列使用。

df=pd.read_csv('data.csv',encoding='gbk',parse_dates=[0,1,2,3])
df

parse_date为字典时,如{'总计':[1, 3]},则将1、3列合并,合并后的列名为“总计”。 

encoding:字符串,默认值为None,文件的编码格式。Python常用的编码格式是UTF-8。 中文编码:'gbk'

df=pd.read_csv('data.csv',encoding='gbk')
df

3.导入html文件 read_html()

常用参数说明: 

io:字符串,文件路径,也可以是URL链接。网址不接受https,可以尝试去掉https中的s后爬取

match:正则表达式,返回与正则表达式匹配的表格。 

flavor:/ˈfleɪvə(r)/解析器默认为lxml。 

header:指定列标题所在的行,列表list为多重索引。 

index_col:指定行标题对应的列,列表list为多重索引。 

encoding:字符串,默认为None,文件的编码格式。

2.数据抽取 loc()和iloc()

区别:

loc属性:以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列

iloc属性:以行和列位置索引(即0,1,2,…)作为参数,0表示第1行,1表示第2行,以此类推。当只有一个参数时,默认是行索引,即抽取整行数据,包括所有列

抽取多行数据

通过loc属性和iloc属性指定行名和行索引即可实现抽取任意多行数据

df1=df.loc[['小明','小兰']]
df1
df1=df.iloc[[0,2]]
df1

如果想要连续的抽取多行数据,使用“:”

df1=df.loc['小明':'小兰']
df1

抽取指定行和列

df.loc/iloc[行,列],如果想要获取所有行或者列,可以使用:获取

df1=df[['语文','数学']]
df1
df1=df.loc[:,['语文','数学']]
df1
df1=df.iloc[:,[0,2]]
df1

按指定条件抽取数据

df1=df.loc[(df['语文']>100)&(df['数学']>80)]
df1

3.数据的增加、修改和删除

1.1增加数据

按列增加数据 :

(1)直接位DataFrame对象赋值

(2)使用loc属性在DataFrame对象的最后一列增加一条数据

(2)在指定位置插入一列  insert()方法  df.insert(添加位置的索引,列名,要插入的数据)

按行添加数据

df1=df.loc['钱多多']=[100,90,98,89,87,78]
df

按行增加数据:

(1)增加一行,直接赋值

(2)增加多行数据,append()

1.2 修改数据

修改行标题 columns

(1)直接给要修改的数据赋值即可,即使修改一条数据,也要将所有的列标题全部写上

(2)rename()方法修改标题

参数inplace为True,表示直接修改df,否则,修改的只是返回后的数据

df1=df.rename(columns={'语文':'语文(上)'},inplace=True)
df

修改列标题 index

(1)直接给index赋值

df.loc['小红']=[98,98,87,76,67,56]
df

(2)使用rename()

df1=df.rename({'小明':'趣多多'},axis=0,inplace=True)
df

修改数据 使用loc和iloc属性

1.3删除数据 drop()

参数说明: 

labels:表示行标签或列标签。 

axis:axis = 0,表示按行删除;

axis = 1,表示按列删除。

默认值为0,即按行删除。 

index:删除行,默认值为None。 

columns:删除列,默认值为None。

level:针对有两级索引的数据。level = 0,表示按第1级索引删除整行;level = 1表示按第2级索引删除整行,默认值为None。 inplace:可选参数,对原数组做出修改并返回一个新数组。默认值为False,如果值为True,那么原数组直接就被替换。 

errors:参数值为ignore或raise,默认值为raise,如果值为ignore(忽略),则取消错误。

参数inplace为True,表示直接修改df,否则,修改的只是返回后的数据

df1=df.drop(index=df[df['画画']==98].index,inplace=True)
df

4.数据清洗

1.1缺失值查看处理

缺失值查看 info( )  isnull()  notnull()

1.2缺失值删除处理 dropna()

how='all',删除所有空行

df.dropna(how='all',inplace=True)
df

1.3缺失值填充处理 fillna()

将NaN填充为0

df['第一周']=df['第一周'].fillna(0)
df

1.4重复值处理 drop_duplicates()

(1)判断是否重复 duplicated()

(2)去除全部的重复数据 drop_duplicates() 默认保留一行

(3)去除指定列的重复数据  drop_duplicates(['列名'])

(4)保留重复行中的最后一行drop_duplicates(['行名'],keep='last')

keep有三个值,keep=first,表示保留第一次出现的重复行

keep为另外两个取值,即last和False时,分别表示保留最后一次出现的重复行和去除所有重复行

(5)直接删除,保留一个副本

inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示删除重复项后生成一个副本

异常值的检测与处理

检测方法:

(1)给定一个范围进行判断,不在范围内的视为异常值

(2)均方差

(3)箱型图

数值替换 replace()  where()

to_repalce:指定需要替换的原值,可以是字符型,正则表达式,列表,series,整数,浮点数或None,例如{‘V1’:n1,'v2':n2}表示使用n1,n2替换掉原来的v1,v2,这时的value必须为None

value:指定用于替换的新值

inplace:True修改原始数据,False仅修改视图

limit:限制向前,向后填充的最大个数

regex:默认False,若为True则to_palce必须为一个字符串

注意:where()替换的是不满足条件的数据

5.索引设置

索引作用:更加方便的查找数据,提升查询性能

1.1重新设置索引 reindex()

常用参数说明: 

labels:标签,可以是数组,默认值为None(无)。 

index:行索引,默认值为None。 

columns:列索引,默认值为None。

axis:轴,axis=0表示行,axis=1表示列。默认值为None。 

method:默认值为None,重新设置索引时,选择插值(一种填充缺失数据的方法)方法,其值可以是None、bfill/backfill(向后填充)、ffill/pad(向前填充)等。 

fill_value:缺失值要填充的数据。如缺失值不用NaN填充,而用0填充,则设置fill_value=0即可

1.2对Series对象重新设置索引 reindex()

reindex()方法根据新索引进行了重新排序,并且对缺失值自动填充NaN。如果不想用NaN填充,则可以为fill_value参数指定值,如0

而对于一些有一定顺序的数据,我们可能需要插值(插值是一种填充缺失数据的方法)来填充缺失的数据,可以使用method参数

method=‘ffill'向前填充

method=’bfill‘向后填充

1.3对DataFrame对象重新设置索引 reindex()

对于DataFrame对象,reindex()方法用于修改行索引和列索引

1.4设置某列为行索引 set_index()

drop=True 会保留索引值, drop=False会删除索引值

如果要重新设置索引可以使用reset_index()方法,在删除缺失数据后重新设置索引

6.数据的排序和排名

1.1数据排序 sort_values()

sort_values()方法可以根据指定行/列进行排序

参数说明: 

by:要排序的名称列表。

axis:轴,axis=0表示行,axis=1表示列。默认值为0,即按行排序。 

ascending:升序或降序排序,布尔值,指定多个排序可以使用布尔值列表。默认值为True。 

inplace:布尔值,默认值为False,如果值为True,则就地排序。 

kind:指定排序算法,值为quicksort(快速排序)、mergesort(混合排序)或heapsort(堆排),默认值为quicksort。 

na_position:空值(NaN)的位置,值为first空值在数据开头,值为last空值在数据最后,默认值为last。 

ignore_index:布尔值,是否忽略索引,值为True标记索引(从0开始按顺序的整数值),值为False则忽略索引

df1=df.sort_values(by='销量',ascending=False)
df1

1.2按多列数据排序

多列排序是按照给定列的先后顺序进行排序的 by

df1=df.sort_values(by=['图书名称','销量'])
df

1.3按行数据排序

按行排序的数据类型要一致,否则会出现错误提示

数据排名 rank()

参数说明: 

axis:轴,axis=0表示行,axis=1表示列。默认值为0,即按行排序。 

method:表示在具有相同值的情况下所使用的排序方法。设置值如下。 

average:默认值,平均排名。

min:最小值排名。 

max:最大值排名。 

first:按值在原始数据中的出现顺序分配排名。 

df['最小值排名']=df['销量'].rank(method="min",ascending=False)
df

dense:密集排名,类似最小值排名,但是排名每次只增加1,即排名相同的数据只占一个名次

numeric_only:对于DataFrame对象,如果设置值为True,则只对数字列进行排序。 

na_option:空值的排序方式,设置值如下。 

keep:保留,将空值等级赋值给NaN值。 

top:如果按升序排序,则将最小排名赋值给NaN值。 

bottom:如果按升序排序,则将最大排名赋值给NaN值。 

ascending:升序或降序排序,布尔值,指定多个排序可以使用布尔值列表。默认值为True。 

pct:布尔值,是否以百分比形式返回排名。默认值为False

Pandas统计分析

数据计算

1.1求和函数sum()

参数说明: 

axis:axis=1表示行,axis=0表示列,默认值为None(无)。 

skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。

level:表示索引层级,默认值为None。 

numeric_only:仅数字,布尔型,默认值为None。 

min_count:表示执行操作所需的数目,整型,默认值为0。 

**kwargs:要传递给函数的附加关键字参数

返回值:返回Series对象或DataFrame对象

1.2求均值(mean()函数)

参数说明: 

axis:axis=1表示行,axis=0表示列,默认值为None(无)。 

skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。 

level:表示索引层级,默认值为None。 

numeric_only:仅数字,布尔型,默认值为None。 

kwargs:要传递给函数的附加关键字参数。 

返回值:返回Series对象或DataFrame对象

1.3求最大值 max()

参数说明: 

**axis:axis=1表示行,axis=0表示列,默认值为None(无)。 

skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。 

**level:表示索引层级,默认值为None。 

**numeric_only:仅数字,布尔型,默认值为None。 

kwargs:要传递给函数的附加关键字参数。

1.4求最小值 min()

参数说明: 

**axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。 

**level:表示索引层级,默认值为None。 

**numeric_only:仅数字,布尔型,默认值为None。 

kwargs:要传递给函数的附加关键字参数

1.5求中位数 median()

参数说明: 

**axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。 

**level:表示索引层级,默认值为None。 

**numeric_only:仅数字,布尔型,默认值为None。 

kwargs:要传递给函数的附加关键字参数。 

返回值:返回Series对象或DataFrame对象

1.6求众数 mode()

axis:axis=1表示行,axis=0表示列,默认值为0。 

numeric_only:仅数字,布尔型,默认值为False。如果值为True,则仅适用于数字列。 

dropna:是否删除缺失值,布尔型,默认值为True

1.7求方差 var()

参数说明: 

axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。 

level:表示索引层级,默认值为None。 

ddof:整型,默认值为1。自由度,计算中使用的除数是N-ddof,其中N表示元素的数量。 

numeric_only:仅数字,布尔型,默认值为None。 

kwargs:要传递给函数的附加关键字参数

1.8标准差 std()

std()函数的参数与var()函数一样

1.9 求分位数quantile()

参数说明: 

q:浮点型或数组,默认为0.5(50%分位数),其值为0~1。 

axis:axis=1表示行,axis=0表示列。默认值为0。 

numeric_only:仅数字,布尔型,默认值为True。 

interpolation:内插值,可选参数[{‘linear’,‘lower’,‘higher’,‘midpoint’,‘nearest’}]用于指定要使用的插值方法,当期望的分位数为数据点i~j时。 

linear:i+(j-i)×分数,其中分数是指数被i和j包围的小数部分。 

lower:i。 

higher:j。 

nearest:i或j二者以最近者为准。 

midpoint:(i+j)/2。 

数据格式化

设置小数位数 round()

该函数可以实现四舍五入,而它的decimals参数则用于设置保留小数的位数,设置后数据类型不会发生变化,依然是浮点型

参数说明:

decimals:每一列四舍五入的小数位数,整型、字典或Series对象。如果是整数,则将每一列四舍五入到相同的位置。否则,将字典和Series舍入到可变数目的位置;如果小数是类似于字典的,那么列名应该在键中;如果小数是级数,列名应该在索引中。没有包含在小数中的任何列都将保持原样。非输入列的小数元素将被忽略。 

args:附加的关键字参数。 

kwargs:附加的关键字参数

自定义函数:为DataFrame对象中的各个浮点数保留两位小数

df.applymap(lambda x:'%.2f'%x)

设置百分比 apply()  map()  format()

利用自定义函数将数据进行格式化处理,处理后的数据就可以从浮点型转换成带指定小数位数的百分比数据

设置千位分隔符

注意:设置千位分隔符后,对于程序来说,这些数据将不再是数值型,而是数字和逗号组成的字符串,如果由于程序需要再变成数值型就会很麻烦,因此设置千位分隔符要慎重

数据分组统计

分组统计 groupby()

groupby()函数用于将数据按照一列或多列进行分组,一般与计算函数结合使用,实现数据的分组统计

语法:DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False)

参数说明: 

by:映射、字典或Series对象、数组、标签或标签列表。如果by是一个函数,则对象索引的每个值都调用它;如果传递了一个字典或Series对象,则使用该字典或Series对象值来确定组;如果传递了数组ndarray,则按原样使用这些值来确定组。 

axis:axis=1表示行,axis=0表示列。默认值为0。 

level:表示索引层级,默认值为None(无)。 

as_index:布尔型,默认值为True,返回以组标签为索引的对象。 

sort:对组进行排序,布尔型,默认值为True。 

group_keys:布尔型,默认值为True,调用apply()函数时,将分组的键添加到索引以标识片段。 

squeeze:布尔型,默认值为False。如果可能,减少返回类型的维度;否则返回一致类型。 

observed: bool, default False 布尔型, 观察者, 默认为False。当以石斑鱼为分类时,才会使用该参数。如果参数值为True,则仅显示分类石斑鱼的观测值;如果参数值为False,则显示分类石斑鱼的所有值。

按照多列分组,就用[]包裹写多个列即可

对分组数据进行迭代

for name,group in df.groupby('分类'):

print(name)

print(group)

name是groupby()函数中“一级分类”的值,group是分组后的数据。如果groupby()函数对多列进行分组,那么需要在for循环中指定多列。

聚合函数 agg()

主要通过groupby()函数与agg()函数实现,可以同时进行多个操作

数据移位 shift()

语法:DataFrame.shift(periods=1, freq=None, axis=0)

参数说明: 

periods:表示移动的幅度,可以是正数,也可以是负数,默认值是1,1表示移动一次。注意这里移动的都是数据,而索引是不移动的,移动之后是没有对应值的,赋值为NaN。 

freq:可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。 

axis:axis=1表示行,axis=0表示列。默认值为0

数据转换

一列数据转换为多列数据  split()

语法:Series.str.split(pat=None, n=-1, expand=False)

参数说明: 

pat:字符串、符号或正则表达式,字符串分割的依据,默认以空格分割字符串。 

n:整型,分割次数,默认值是-1,0或-1都将返回所有拆分。 

expand:布尔型,分割后的结果是否转换为DataFrame,默认值是False

join()方法与split()方法结合

 以逗号分隔多种产品数据

df = df.join(df['宝贝标题'].str.split(', ', expand=True))

将DataFrame中的tuple(元组)类型数据分隔成多列

使用apply()函数对元组进行分隔

行列转换 stack()

stack()方法

将原来的列索引转换成最内层的行索引

DataFrame.stack(level=-1, dropna=True)

参数说明: 

level:索引层级,定义为一个索引或标签,或索引或标签列表,默认值是-1。 

dropna:布尔型,默认值是True

unstack()方法

unstack()方法与stack()方法相反,它是stack()方法的逆操作,即将最内层的行索引转换成列索引

语法:

DataFrame.unstack(level=-1, fill_value=None)

参数说明: 

level:索引层级,定义为一个索引或标签,或索引或标签列表,默认值是-1。 

fill_value:整型、字符串或字典,如果unstack()方法产生丢失值,则用这个值替换NaN。

pivot()方法

pivot()方法针对值进行操作

语法:

DataFrame.pivot(index=None, columns=None, values=None)

参数说明: 

index:字符串或对象,可选参数。列用于创建新DataFrame数据的索引。如果没有,则使用现有索引。 

columns:字符串或对象,列用于创建新DataFrame的列。 

values:列用于填充新DataFrame的值,如果未指定,则将使用所有剩余的列,结果将具有分层索引列

DataFrame转换为字典 to_dict()

DataFrame转换为字典主要使用DataFrame对象的to_dict()方法,以索引作为字典的键(key),以列作为字典的值(value)

DataFrame转换为列表 tolist()

DataFrame转换为元组  tuple()

Excel转换为HTML网页格式 to_html()

首先使用read_excel()方法导入Excel文件,然后使用to_html()方法将DataFrame数据导出为HTML格式,这样便实现了Excel转换为HTML格式

数据合并

数据合并 merge()

语法:

pandas.merge(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)

参数说明: 

right:合并对象,DataFrame对象或Series对象。 

how:合并类型,参数值可以是left(左合并)、right(右合并)、outer(外部合并)或inner(内部合并),默认值为inner。各个值的说明如下。 

left:只使用来自左数据集的键,类似于SQL左外部联接,保留键的顺序。 

right:只使用来自右数据集的键,类似于SQL右外部联接,保留键的顺序。 

outer:使用来自两个数据集的键,类似于SQL外部联接,按字典顺序对键进行排序。 

inner:使用来自两个数据集的键的交集,类似于SQL内部连接,保持左键的顺序。

on:标签、列表或数组,默认值为None。DataFrame对象连接的列或索引级别名称。也可以是DataFrame对象长度的数组或数组列表。

left_on:标签、列表或数组,默认值为None。要连接的左数据集的列或索引级名称,也可以是左数据集长度的数组或数组列表。 

right_on:标签、列表或数组,默认值为None。要连接的右数据集的列或索引级名称,也可以是右数据集长度的数组或数组列表。 left_index:布尔型,默认值为False。使用左数据集的索引作为连接键。如果是多重索引,则其他数据中的键数(索引或列数)必须匹配索引级别数。

right_index:布尔型,默认值为False,使用右数据集的索引作为连接键。 

sort:布尔型,默认值为False,在合并结果中按字典顺序对连接键进行排序。如果值为False,则连接键的顺序取决于连接类型how参数。 

suffixes:元组类型,默认值为('x','y')。当左侧数据集和右侧数据集的列名相同时,数据合并后列名将带上“x”和“y”后缀。 

copy:是否复制数据,默认值为True。如果值为False,则不复制数据。 

indicator:布尔型或字符串,默认值为False。如果值为True,则添加一个列以输出名为_Merge的DataFrame对象,其中包含每一行的信息。如果是字符串,将向输出的DataFrame对象中添加包含每一行信息的列,并将列命名为字符型的值。 

validate:字符串,检查合并数据是否为指定类型。可选参数,其值说明如下。 one_to_one或“1:1”:检查合并键在左、右数据集中是否都是唯一的。 one_to_many或“1:m”:检查合并键在左数据集中是否唯一。 many_to_one或“m:1”:检查合并键在右数据集中是否唯一。 many_to_many或“m:m”:允许,但不检查

数据合并 concat()

语法:

pandas.concat(objs,axis=0,join='outer',ignore_index: bool = False, keys=None, levels=None, names=None, verify_integrity: bool = False, sort: bool = False, copy: bool = True)

参数说明: 

objs:Series、DataFrame或Panel对象的序列或映射。如果传递一个字典,则排序的键将用作键参数。 

axis:axis=1表示行,axis=0表示列。默认值为0。 

join:值为inner(内连接)或outer(外连连接),处理其他轴上的索引方式。默认值为outer。 

ignore_index:布尔值,默认值为False,保留索引,索引值为0,…,n-1。如果值为True,则忽略索引。 

keys:序列,默认值为None。使用传递的键作为最外层构建层次索引。如果为多索引,应该使用元组。 

levels:序列列表,默认值为None。用于构建MultiIndex的特定级别(唯一值);否则,它们将从键推断。 

names:list列表,默认值为None。结果层次索引中的级别的名称。 

verify_integrity:布尔值,默认值为False。检查新连接的轴是否包含重复项。 

sort:布尔值,默认值为True(1.0.0以后版本默认值为False,即不排序)。如果连接为外连接(join='outer'),则对未对齐的非连接轴进行排序;如果连接为内连接(join='inner'),则该参数不起作用。

copy:是否复制数据,默认值为True,如果值为False,则不复制数据

(1)表结构相同的数据直接合并,表首尾相接

(2)当合并的数据列名不一致时,可以设置参数axis=1,concat()将数据对齐,然后进行合并,缺失的数据用NaN填充

(3)交叉合并,在代码中加上join参数,如果值为inner,结果是两张表的交集,如果值是outer,

结果是两张表的并集

数据导出

导出.xlsx文件 to_excel()

参数说明: 

excel_writer:字符串或ExcelWriter对象。 

sheet_name:字符串,默认值为Sheet1,包含DataFrame的表的名称。 

na_rep:字符串,默认值为' '。缺失数据的表示方式。 

float_format:字符串,默认值为None,格式化浮点数的字符串。 

columns:序列,可选参数,要编辑的列。 

header:布尔型或字符串列表,默认值为True。列名称,如果给定字符串列表,则表示它是列名称的别名。 

index:布尔型,默认值为True,行名(索引)。 

index_label:字符串或序列,默认值为None。如果需要,可以使用索引列的列标签;如果没有给出,标题和索引为True,则使用索引名称;如果数据文件使用多索引,则需使用序列。

startrow:指定从哪一行开始写入数据。 

startcol:指定从哪一列开始写入数据。 

engine:字符串,默认值为None,指定要使用的写引擎,如openpyxl或xlsxwriter。也可以通过io.excel.xlsx.writer、io.excel.xls.writer和io.excel.xlsm.writer进行设置。 

merge_cells:布尔型,默认值为True。 

encoding:指定Excel文件的编码方式,默认值为None。 

inf_rep:字符串,默认值为“正”,表示无穷大。 

verbose:布尔型,默认值为True。在错误日志中显示更多信息。 

freeze_panes:整数的元组,长度2,默认值为None。指定要冻结的行列

导出csv文件  to_csv()

参数说明: 

path_or_buf:要保存的路径及文件名。 

sep:分隔符,默认值为","。 

na_rep:指定空值的输出方式,默认值为空字符串。 

float_format:浮点数的输出格式,要用双引号括起来。 

columns:指定要导出的列,用列名列表表示,默认值为None。 

header:是否输出列名,默认值为True。 

index:是否输出索引,默认值为True。 

index_label:索引列的列名,默认值为None。 

mode:Python写入模式,默认值为w。 

encoding:编码方式,默认值为utf-8。 

compression:压缩模式,默认值为infer。 

quoting:导出.csv文件是否用引号,默认值为0,表示不加双引号;如果值为1,则每个字段都会加上引号,数值也会被当作字符串看待。

quotechar:引用字符,当quoting=1时可以指定引号字符为双引号(" ")或单引号(' ')。 

line_terminator:换行符,默认值为\n。

chunksize:一次写入.csv文件的行数,当DataFrame对象数据特别大时需要分批写入。 

date_format:日期输出格式。 

doublequote:是否添加双引用符,默认值为True。 

escapechar:设置转义字符。 

decimal:可识别十进制分隔符的字符。 

errors:指定如何处理编码和解码错误,默认值为strict(严格的)

导出多个sheet

导出多个Sheet,应首先使用pd.ExcelWriter()方法打开一个Excel文件,然后再使用to_excel()方法导出指定的Sheet

日期数据处理

DataFrame的日期数据转换 to_datetime()

参数说明: 

arg:字符串、日期时间、字符串数组。 

errors:值为ignore、raise或coerce,具体说明如下,默认值为ignore,即忽略错误。 

ignore:无效的解析将返回原值。 

raise:无效的解析将引发异常。 

coerce:无效的解析将被设置为NaT,即无法转换为日期的数据将被转换为NaT。 

dayfirst:第一个为天,布尔型,默认值为False。例如02/09/2020,如果值为True,则解析日期的第一个为天,即2020-09-02;如果值为False,则解析日期与原日期一致,即2020-02-09。 

yearfirst:第一个为年,布尔型,默认值为False。例如14-Feb-20,如果值为True,则解析日期的第一个为年,即2014-02-20;如果值为False,则解析日期与原日期一致,即2020-02-14。 

utc:默认值为None。返回utc即协调世界时间。 

box:布尔值,默认值为True,如果值为True,则返回DatetimeIndex;如果值为False,则返回ndarray。 

format:格式化显示时间的格式。字符串,默认值为None。 

exact:布尔值,默认值为True。如果为True,则要求格式完全匹配;如果为False,则允许格式与目标字符串中的任何位置匹配。 

unit:默认值为None,参数的单位(D、s、、ms、μs、ns)表示时间的单位。 

infer_datetime_format:默认值为False。如果没有格式,则尝试根据第一个日期时间字符串推断格式。 

origin:默认值为unix。定义参考日期。数值将被解析为单位数。 

cache:默认值为False。如果值为True,则使用唯一、转换日期的缓存应用日期时间转换。在解析重复日期字符串,特别是带有时区偏移的字符串时,可能会产生明显的加速。只有在至少有50个值时才使用缓存。越界值的存在将使缓存不可用,并可能减慢解析速度

df['时间']=df['时间'].apply(lambda x:str(x))
df['转化后日期']=pd.to_datetime(df['时间'])
df

计算100天之后

df['100天后']=df['转化后日期']+pd.Timedelta(100,'D')
df

组合日期要求: 

必选:year、month、day。 

可选:hour、minute、second、millisecond(毫秒)、microsecond(微秒)、nanosecond(纳秒)

列出2022年每个月

data=pd.date_range('2022',periods=12,freq='M')
data

dt对象的使用

Series.dt()

dt对象提供了year、month、day、dayofweek、dayofyear、is_leap_year、quarter、weekday_name等属性和方法。

(1)获取年、月、日

df['年'],df['月'],df['日']=df['日期'].dt.year,df['日期'].dt.month,df['日期'].dt.day

(2)从日期判断出所处星期数

df['星期几']=df['日期'].dt.day_name()

(3)从日期判断所处季度

df['季度']=df['日期'].dt.quarter

(4)从日期判断是否为年底最后一天

df['是否年底']=df['日期'].dt.is_year_end

获取日期区间的数据

df['日期']  df['开始日期':'结束日期']

按时期统计数据

(1)按年统计数据 df1.resample('AS').sum()

(2)按季度统计数据  df2.resample('Q').sum()

(3)按月度统计数据  df1.resample('M').sum()

(4)按星期统计数据  df1.resample('W').sum()

(5)按天统计数据   df1.resample('D').sum()

df.index=pd.to_datetime(df.index)
df.resample('D').sum
df

按时期统计并显示数据

(1)按年统计并显示数据  df2.resample('AS').sum().to_period('A')

(2)按季度统计并显示数据    Q_df=df2.resample('Q').sum().to_period('Q')

(3)按月统计并显示数据   df2.resample('M').sum().to_period('M')

(4)按星期统计并显示数据(前5条数据)  df2.resample('W').sum().to_period('W').head()

时间序列

重采样 Resample()

参数说明: 

rule:字符串,偏移量表示目标字符串或对象转换。 

how:用于产生聚合值的函数名或数组函数。例如mean、ohlc和np.max等,默认值为mean,其他常用的值为first、last、median、max和min。 

axis:整型,表示行列,axis=0表示列,axis=1表示行。默认值为0,即表示列。 

fill_method:升采样时所使用的填充方法,ffill()方法(用前值填充)或bfill()方法(用后值填充),默认值为None。 

closed:降采样时,时间区间的开和闭,与数学里区间的概念一样,其值为right或left,right表示左开右闭(即左边值不包括在内),left表示左闭右开(即右边值不包括在内),默认值为right左开右闭。 

label:降采样时,如何设置聚合值的标签。例如,10:30—10:35会被标记成10:30还是10:35,默认值为None。 

convention:当重采样时,将低频率转换到高频率所采用的约定,其值为start或end,默认值为start。 

kind:聚合到时期(period)或时间戳(timestamp),默认聚合到时间序列的索引类型,默认值为None。 

loffset:聚合标签的时间校正值,默认值为None。例如,-1s或Second(-1)用于将聚合标签调早1秒。 

limit:向前或向后填充时,允许填充的最大时期数,默认值为None。

base:整型,默认值为0。对于均匀细分1天的频率,聚合间隔的“原点”。例如,对于5min频率,base的范围可以是0~4。 

on:字符串,可选参数,默认值为None。对DataFrame对象使用列代替索引进行重新采样。列必须与日期时间类似。 

level:字符串或整型,可选参数,默认值为None。用于多索引,重新采样的级别名称或级别编号,级别必须与日期时间类似

降采样处理

降采样是周期由高频率转向低频率

df=pd.read_excel('date.xlsx')
df['时间']=df['时间'].apply(lambda x:str(x))
df['转化后日期']=pd.to_datetime(df['时间'])
df1=df.set_index('转化后日期')
df1.resample('W').sum().head()

升采样处理

升采样是周期由低频率转向高频率

3种填充方法。 

不填充。空值用NaN代替,使用asfreq()方法。 

用前值填充。用前面的值填充空值,使用ffill()方法或者pad()方法。为了方便记忆,ffill()方法可以使用它的第一个字母“f”代替,代表forward,向前的意思。 

用后值填充,使用bfill()方法,可以使用字母“b”代替,代表back,向后的意思。

时间序列数据汇总

resample.ohlc() ohlc()函数返回DataFrame对象,每组数据的open(开)、high(高)、low(低)和close(关)值

移动窗口数据计算  rolling()

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

参数说明: 

window:时间窗口的大小,有两种形式,即int或offset。如果使用int,则数值表示计算统计量的观测值的数量,即向前几个数据;如果使用offset,则表示时间窗口的大小。 

min_periods:每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。值可以是int,默认值为None。offset情况下,默认值为1。

center:把窗口的标签设置为居中。布尔型,默认值为False,居右。

win_type:窗口的类型。截取窗的各种函数。字符串类型,默认值为None。 

on:可选参数。对于DataFrame对象,是指定要计算移动窗口的列,值为列名。 

axis:整型,axis=0表示列,axis=1表示行。默认值为0,即对列进行计算。 

closed:定义区间的开闭,支持int类型的窗口。对于offset类型默认是左开右闭(默认值为right)。可以根据情况指定left。 

pandas两个数据结构Series与DataFrame使用相关推荐

  1. Pandas系列(一):数据结构(Series、DataFrame、时间序列)

    Pandas系列目录 文章目录 一. 简介 二. 思维导图 三. Pandas数据结构 1. Series 1.1 简介 1.2 创建Series 1.3 Series属性 1.4 索引切片 1.4. ...

  2. python数据分析类库_python数据分析类库系列-Pandas入门之数据结构Series

    pandas是后续内容的首选库.它含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具. 在后续部分中,我将使用下面这样的pandas引入约定: import pandas as pd 要使用p ...

  3. python3-pandas 数据结构 Series、DataFrame 基础

    Pandas 应用 Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融.统计.社会科学.工程等领域里的大多数典型用例. 数据结构 ...

  4. dataframe drop_Pandas数据结构Series和DataFrame基础详解

    作者:Zarten知乎专栏:python数据分析与挖掘深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 p ...

  5. pandas简介及其数据结构Series详解

    python高级应用与数据分析学习笔记 11 1.简介 1.1 介绍 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析 ...

  6. pandas库随笔——更改Series与DataFrame的列标签

    我们要对Series和DataFrame的列标签进行修改,通常是使用rename函数,还有一种方法就是使用暴力修改法,下面分别针对两种方法进行代码演示以及进行说明. 首先我们先载入pandas库并且生 ...

  7. Pandas——Series与DataFrame

    文章目录 1.Numpy 和 Pandas 的比较 2.Series 3.DataFrame 4.DataFrame 的简单运用 1.Numpy 和 Pandas 的比较 如果用 python 的列表 ...

  8. python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并

    目录 1 pandas介绍 1.1 Pandas介绍 1.2 为什么使用Pandas 1.3 案例:在numpy当中创建的股票涨跌幅数据形式 1.4 DataFrame 1.4.1 DataFrame ...

  9. 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)

    文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...

最新文章

  1. 前端资源预加载并展示进度条
  2. c语言数组本质,c语言数组的本质
  3. rowid会变化么_升级后的饿了么,将成为阿里引领数字化的先锋
  4. java求职_Java 求职怎么积累知识才可以找到工作
  5. java计算两个文本框的值,java 文本框自动获取另外两个文本框的值的乘积
  6. u盘弹出工具_mac怎么格式化u盘?
  7. LORA 网关上电后对应配置 以及常用的AT指令
  8. javascript指定日期增加自然月份(有闰年2月判断)
  9. ARM7-LPC213x(五)UART0 和 UART1
  10. 小程序测试之微信开发者工具
  11. 第12届信息化领袖峰会丨行程安排新鲜出炉
  12. 【邮件处理】邮件eml文件解析
  13. 鸿蒙设备开发者门户,鸿蒙系统在华为开发者大会上正式亮相
  14. BAT等互联网公司薪资分享
  15. HUST Trainning 2015-06-14
  16. centos8安装显卡驱动
  17. Linux内核的5个子系统
  18. 深入探索Android内存优化(炼狱级别)
  19. python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)
  20. 树莓派搭建百度云同步

热门文章

  1. java数字验证码功能实现
  2. Windows下安装lex(flex)与yacc(bison)
  3. InflateRect
  4. 分享一首诗,不敲代码的时候,也要将生活过的有诗意
  5. python 计算字符串长度(含中文)
  6. chrome浏览器解决跨域调试问题
  7. 惊爆眼球!视频解读游戏中DX9与DX11画质差别
  8. python文本筛选多个word_用Python批量替换多个Word文件中的文字
  9. 解决Failed to load D:\Android-Studio\sdk\build-tools\26.0.1\lib\dx.jar
  10. 激发儿童数学兴趣的iPhone、iPad游戏“Panasonic Prime Smash!”全面改版