语法:s=pd.Series(data,index=index)
data:表示数据,支持Python字典、多维数组、标量值(即只有大小,没有方向的量。也就是说,只是一个数值,如s=pd.Series(5))
index:表示行标签(索引)
返回值:Series对象
注意:data参数是多维数组时,index的长度必须与data长度一致,如果没有指定index参数,会自动创建数值型索引(从0~data数据长度-1)
手动设置series索引通过index参数设置,index=[]
位置索引是从0开始的,以此类推
import pandas as pd
s1=pd.Series([88,60,75])
print(s1[0])
运行结果 :88
注意:series不能使用[-1]定位索引
Series标签索引与位置索引方法类似,用[ ]表示,里面是索引名称,注意index的数据类型是字符串,如果需要获取多个标签索引值,用[[ ]]表示
用标签索引做切片,包头包尾(即包含索引开始位置的数据,也包含索引结束位置的数据)
用位置索引做切片,和list列表用法一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)
s2=pd.Series([88,60,75,34,68])
print(s2[1:4])
运行结果:1 60 2 75 3 34
获取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]
语法: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值只能是一维数组或单个的简单数据类型,如果是数组,要求所有数组长度一致;如果是单个数据,则每行都添加相同数据。
参数:
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
常用参数说明:
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
常用参数说明:
io:字符串,文件路径,也可以是URL链接。网址不接受https,可以尝试去掉https中的s后爬取
match:正则表达式,返回与正则表达式匹配的表格。
flavor:/ˈfleɪvə(r)/解析器默认为lxml。
header:指定列标题所在的行,列表list为多重索引。
index_col:指定行标题对应的列,列表list为多重索引。
encoding:字符串,默认为None,文件的编码格式。
区别:
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
按列增加数据 :
(1)直接位DataFrame对象赋值
(2)使用loc属性在DataFrame对象的最后一列增加一条数据
(2)在指定位置插入一列 insert()方法 df.insert(添加位置的索引,列名,要插入的数据)
按行添加数据
df1=df.loc['钱多多']=[100,90,98,89,87,78]
df
按行增加数据:
(1)增加一行,直接赋值
(2)增加多行数据,append()
修改行标题 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属性
参数说明:
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
缺失值查看 info( ) isnull() notnull()
how='all',删除所有空行
df.dropna(how='all',inplace=True)
df
将NaN填充为0
df['第一周']=df['第一周'].fillna(0)
df
(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)箱型图
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()替换的是不满足条件的数据
常用参数说明:
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即可
reindex()方法根据新索引进行了重新排序,并且对缺失值自动填充NaN。如果不想用NaN填充,则可以为fill_value参数指定值,如0
而对于一些有一定顺序的数据,我们可能需要插值(插值是一种填充缺失数据的方法)来填充缺失的数据,可以使用method参数
method=‘ffill'向前填充
method=’bfill‘向后填充
对于DataFrame对象,reindex()方法用于修改行索引和列索引
drop=True 会保留索引值, drop=False会删除索引值
如果要重新设置索引可以使用reset_index()方法,在删除缺失数据后重新设置索引
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
多列排序是按照给定列的先后顺序进行排序的 by
df1=df.sort_values(by=['图书名称','销量'])
df
按行排序的数据类型要一致,否则会出现错误提示
参数说明:
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
参数说明:
axis:axis=1表示行,axis=0表示列,默认值为None(无)。
skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
level:表示索引层级,默认值为None。
numeric_only:仅数字,布尔型,默认值为None。
min_count:表示执行操作所需的数目,整型,默认值为0。
**kwargs:要传递给函数的附加关键字参数
返回值:返回Series对象或DataFrame对象
参数说明:
axis:axis=1表示行,axis=0表示列,默认值为None(无)。
skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
level:表示索引层级,默认值为None。
numeric_only:仅数字,布尔型,默认值为None。
kwargs:要传递给函数的附加关键字参数。
返回值:返回Series对象或DataFrame对象
参数说明:
**axis:axis=1表示行,axis=0表示列,默认值为None(无)。
skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
**level:表示索引层级,默认值为None。
**numeric_only:仅数字,布尔型,默认值为None。
kwargs:要传递给函数的附加关键字参数。
参数说明:
**axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
**level:表示索引层级,默认值为None。
**numeric_only:仅数字,布尔型,默认值为None。
kwargs:要传递给函数的附加关键字参数
参数说明:
**axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
**level:表示索引层级,默认值为None。
**numeric_only:仅数字,布尔型,默认值为None。
kwargs:要传递给函数的附加关键字参数。
返回值:返回Series对象或DataFrame对象
axis:axis=1表示行,axis=0表示列,默认值为0。
numeric_only:仅数字,布尔型,默认值为False。如果值为True,则仅适用于数字列。
dropna:是否删除缺失值,布尔型,默认值为True
参数说明:
axis:axis=1表示行,axis=0表示列,默认值为None(无)。 skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None。
level:表示索引层级,默认值为None。
ddof:整型,默认值为1。自由度,计算中使用的除数是N-ddof,其中N表示元素的数量。
numeric_only:仅数字,布尔型,默认值为None。
kwargs:要传递给函数的附加关键字参数
std()函数的参数与var()函数一样
参数说明:
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。
该函数可以实现四舍五入,而它的decimals参数则用于设置保留小数的位数,设置后数据类型不会发生变化,依然是浮点型
参数说明:
decimals:每一列四舍五入的小数位数,整型、字典或Series对象。如果是整数,则将每一列四舍五入到相同的位置。否则,将字典和Series舍入到可变数目的位置;如果小数是类似于字典的,那么列名应该在键中;如果小数是级数,列名应该在索引中。没有包含在小数中的任何列都将保持原样。非输入列的小数元素将被忽略。
args:附加的关键字参数。
kwargs:附加的关键字参数
自定义函数:为DataFrame对象中的各个浮点数保留两位小数
df.applymap(lambda x:'%.2f'%x)
利用自定义函数将数据进行格式化处理,处理后的数据就可以从浮点型转换成带指定小数位数的百分比数据
注意:设置千位分隔符后,对于程序来说,这些数据将不再是数值型,而是数字和逗号组成的字符串,如果由于程序需要再变成数值型就会很麻烦,因此设置千位分隔符要慎重
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循环中指定多列。
主要通过groupby()函数与agg()函数实现,可以同时进行多个操作
语法:DataFrame.shift(periods=1, freq=None, axis=0)
参数说明:
periods:表示移动的幅度,可以是正数,也可以是负数,默认值是1,1表示移动一次。注意这里移动的都是数据,而索引是不移动的,移动之后是没有对应值的,赋值为NaN。
freq:可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。
axis:axis=1表示行,axis=0表示列。默认值为0
语法:Series.str.split(pat=None, n=-1, expand=False)
参数说明:
pat:字符串、符号或正则表达式,字符串分割的依据,默认以空格分割字符串。
n:整型,分割次数,默认值是-1,0或-1都将返回所有拆分。
expand:布尔型,分割后的结果是否转换为DataFrame,默认值是False
以逗号分隔多种产品数据
df = df.join(df['宝贝标题'].str.split(', ', expand=True))
将DataFrame中的tuple(元组)类型数据分隔成多列
使用apply()函数对元组进行分隔
将原来的列索引转换成最内层的行索引
DataFrame.stack(level=-1, dropna=True)
参数说明:
level:索引层级,定义为一个索引或标签,或索引或标签列表,默认值是-1。
dropna:布尔型,默认值是True
unstack()方法与stack()方法相反,它是stack()方法的逆操作,即将最内层的行索引转换成列索引
语法:
DataFrame.unstack(level=-1, fill_value=None)
参数说明:
level:索引层级,定义为一个索引或标签,或索引或标签列表,默认值是-1。
fill_value:整型、字符串或字典,如果unstack()方法产生丢失值,则用这个值替换NaN。
pivot()方法针对值进行操作
语法:
DataFrame.pivot(index=None, columns=None, values=None)
参数说明:
index:字符串或对象,可选参数。列用于创建新DataFrame数据的索引。如果没有,则使用现有索引。
columns:字符串或对象,列用于创建新DataFrame的列。
values:列用于填充新DataFrame的值,如果未指定,则将使用所有剩余的列,结果将具有分层索引列
DataFrame转换为字典主要使用DataFrame对象的to_dict()方法,以索引作为字典的键(key),以列作为字典的值(value)
首先使用read_excel()方法导入Excel文件,然后使用to_html()方法将DataFrame数据导出为HTML格式,这样便实现了Excel转换为HTML格式
语法:
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”:允许,但不检查
语法:
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,
结果是两张表的并集
参数说明:
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。指定要冻结的行列
参数说明:
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,应首先使用pd.ExcelWriter()方法打开一个Excel文件,然后再使用to_excel()方法导出指定的Sheet
参数说明:
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
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()
参数说明:
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(关)值
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。