版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
数据处理包Pandaspandas简介、序列创建与访问序列属性与方法序列切片与聚合运算Pandas简介第3章
Pandas是基于Numpy开发的一个Python数据分析包,提供了大量的数据分析函数,包括数据处理、数据抽取、数据集成、数据计算等基本的数据分析手段。Pandas核心数据结构包括序列和数据框,序列储存一维数据,而数据框则可以存储更复杂的多维数据。这里的数据框主要用来存储二维数据(类似于数据表)。通过importpandasaspd命令导入该包,其中pd为其简写。序列创建及访问第3章
序列由索引index和对应的值构成,默认情况下索引从0开始从小到大顺序排列,每个索引对应一个值。可以通过列表、元组、数组、字典等创建默认序列或个性化序列。序列对象的创建通过Pandas包中的Series()函数来实现。importpandasaspd
#导入Pandas库importnumpyasnp
#导入Numpy库s1=pd.Series([1,-2,2.3,'hq'])#指定列表创建默认序列s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d'])#指定列表和索引,创建个性化序列s3=pd.Series((1,2,3,4,'hq'))
#指定元组创建默认序列s4=pd.Series(np.array([1,2,4,7.1]))
#指定数组创建默认序列#通过字典创建序列mydict={'red':2000,'bule':1000,'yellow':500}
#定义字典ss=pd.Series(mydict)
#指定字典创建序列序列创建及访问第3章序列的访问通过index索引访问对应的元素值。print(s4[3])print(s2['c'])执行结果如下:7.12.3序列属性第3章序列有两个属性,分别为值(values)和索引(index)。通过序列中的values属性和index属性可以获取其内容。importpandasaspds1=pd.Series([1,-2,2.3,'hq'])#创建序列s1va1=s1.values#获取序列s1中的值,赋给变量va1in1=s1.index#获取序列s1中的索引,赋给变量in1print(va1)
#打印变量结果print(in1)
#打印变量结果,可通过list()函数转化为列表,如in2=list(in1)执行结果如下:[1-22.3'hq']RangeIndex(start=0,stop=4,step=1)序列方法第3章unique()通过序列中的unique()方法,可以去掉序列中重复的元素值importpandasaspds5=[1,2,2,3,'hq','hq','he']#定义列表s5s5=pd.Series(s5)#将定义的列表s5转换为序列s51=s5.unique()#调用unique()方法去重print(s51)
执行结果如下:[123'hq''he']序列方法第3章isin()通过isin()方法,判断元素值的存在性,如果存在则返回True,否则为False。比如判断‘he’这个元素是否存在前面定义的s5序列中。importpandasaspds5=[1,2,2,3,'hq','hq','he']s5=pd.Series(s5)s52=s5.isin(['he'])print(s52)执行结果如下:0False1False2False3False4False5False6Truedtype:bool序列方法——value_counts()第3章value_counts()通过序列中的value_counts()方法,可以统计获得序列元素值出现的次数。比如统计s5序列中每个元素值出现的次数。s53=s5.value_counts()其中索引(index)为原序列元素的值,其值部分则为出现的次数。序列方法——空值处理方法第3章空值处理方法:isnull()、notnull()、dropan()它们的使用方法如下:isnull()判断序列中是否有空值(nan值),如果有空值,返回True,否则False;notnull()判断序列中的非空值(nan值),如果真,返回True,否则False;dropan()清洗序列中的空值(nan值)。importpandasaspdimportnumpyasnpss1=pd.Series([10,'hq',60,np.nan,20])#定义序列ss1,其中np.nan为空值(nan值)tt=ss1[~ss1.isnull()]#~为取反,采用逻辑数组进行索引获取数据在以上代码后面继续输入以下示例程序:tt2=ss1[ss1.notnull()]tt3=ss1.dropna()tt2和tt3的结果与tt一样。序列切片第3章序列元素访问是通过索引完成的,切片即连续或者间断地批量获取元素。importnumpyasnps1=pd.Series([1,-2,2.3,'hq'])s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d'])s4=pd.Series(np.array([1,2,4,7.1]))s22=s2[['a','d']]#取索引号为字符a,b的元素s11=s1[0:2]#索引为连续的数组s12=s1[[0,2,3]]#索引为不连续的数组s41=s4[s4>2]#索引为逻辑数组print(s22)print('-'*20)print(s11)print('-'*20)print(s12)print('-'*20)print(s41)执行结果如下:a1dhqdtype:object--------------------011-2dtype:object--------------------0122.33hqdtype:object--------------------24.037.1dtype:float64序列聚合运算第3章序列的聚合运算,主要包括对序列中的元素求和、平均值、最大值、最小值、方差、标准差等。importpandasaspds=pd.Series([1,2,4,5,6,7,8,9,10])su=s.sum()sm=s.mean()ss=s.std()smx=s.max()smi=s.min()第3章
数据处理包Pandas数据框(DataFrame)简介、创建数据框属性与方法数据框访问与切片数据框(DataFram)简介第3章
Pandas中另一个重要的数据对象为数据框(DataFram),由多个序列按照相同的index组织在一起形成一个二维表。事实上,数据框的每一列为序列。数据框的属性包括index、列名和值,均可以获取出来并进行操作。由于数据框是更为广泛的一种数据组织形式,许多外部数据文件读取到Python中大部分会采用数据框的形式进行存取,比如数据库、excel和TXT文本。同时数据框也提供了极为丰富的方法用于处理数据及完成计算任务。数据框创建第3章
基于字典,利用Pandas库中的DataFrame函数,可以创建数据框。其中字典的键转化为列名,字典的值转化为列值,而索引为默认值,即从0开始从小到大排列。importpandasaspdimportnumpyasnpdata={'a':[2,2,np.nan,5,6],'b':[‘kl’,’kl’,’kl’,np.nan,’kl’],’c’:[4,6,5,np.nan,6],’d’:[7,9,np.nan,9,8]}df=pd.DataFrame(data)数据框属性第3章
数据框对象具有三个属性,分别为列名、索引和值。以前面定义的df为例print('columns=',df.columns)print('-'*50)print('index=',list(df.index))print('-'*50)print('values=')print(df.values)输出结果为:columns=Index(['a','b','c','d'],dtype='object')--------------------------------------------------index=[0,1,2,3,4]--------------------------------------------------values=[[2.0'kl'4.07.0][2.0'kl'6.09.0][nan'kl'5.0nan][5.0nannan9.0][6.0'kl'6.08.0]]数据框方法第3章dropna()通过dorpna()方法,可以去掉数据集中的空值(nan值),需要注意的是原来数据集不发生改变,新数据集需要重新定义。df1=df.dropna()数据框方法第3章
fillna()通过fillna()方法,可以对数据框中的空值(nan值)进行填充。默认情况下所有空值填充同一个元素值(数值或者字符串),也可以指定不同的列填充不同的值。df2=df.fillna(0)#所有空值元素填充0df3=df.fillna('Kl')#所有空值元素填充kldf4=df.fillna({'a':0,'b':'kl','c':0,'d':0})
#全部列填充df5=df.fillna({'a':0,'b':'kl'})#部分列填充数据框方法第3章
sort_values()可以利用sort_values()方法,指定列按值进行排序importpandasaspddata={'a':[5,3,4,1,6],'b':['d','c','a','e','q'],'c':[4,6,5,5,6]}Df=pd.DataFrame(data)Df1=Df.sort_values('a',ascending=False)#默认按升序,这里设置为降序数据框方法第3章sort_index()有时候需要按索引进行排序,这时候可以使用sort_index()方法。Df2=Df1.sort_index(ascending=False)#默认按升序,这里设置为降序数据框方法第3章head()通过head(N)方法,可以取数据集中的前N行,比如取前面定义的数据框Df2中的前4行。H4=Df2.head(4);数据框方法第3章
drop()利用dorp()方法,可以删掉数据集中的指定列。比如删除前面定义的H4中的b列。H41=H4.drop('b',axis=1)#需指定轴为1数据框方法第3章
join()利用join()方法,可以实现两个数据框之间的水平连接Df3=pd.DataFrame({'d':[1,2,3,4,5]})Df4=Df.join(Df3)数据框方法第3章to_excel()通过to_excel()方法,可以将数据框导出到Excel文件中,Excel文件中。importpandasaspdlist1=['a','b','c','d','e','f']list2=[1,2,3,4,5,6]list3=[1.4,3.5,2,6,7,8]list4=[4,5,6,7,8,9]list5=['t',5,6,7,'k',9.6]D={'M1':list1,'M2':list2,'M3':list3,'M4':list4,'M5':list5}G={'M1':list2,'M2':list3,'M3':list4}D=pd.DataFrame(D)#将字典D转化为数据框G=pd.DataFrame(G)#将字典G转化为数据框D.to_excel('D.xlsx')G.to_excel('G.xlsx')数据框方法第3章
描述统计方法可以对数据框中各列求和、求平均值或者进行描述性统计,以前面定义的Df4为例Dt=Df4.drop('b',axis=1)#Df4中删除b列R1=Dt.sum()#各列求和R2=Dt.mean()#各列求平均值R3=Dt.describe()#各列做描述性统计数据框访问与切片第3章
利用数据框中的iloc属性进行切片假设DF为待访问或切片的数据框,则切片形式为:DF.iloc[①,②]。其中①为行下标控制,②为列下标控制,可通过数值列表来实现,取所有的行或者列用“:”。同时,行控制还可以通过逻辑列表来实现。#ilocforpositionalindexingc3=df2.iloc[1:3,2]c4=df2.iloc[1:3,0:2]c5=df2.iloc[1:3,:]c6=df2.iloc[[0,2,3],[1,2]]TF=[True,False,False,True,True]c7=df2.iloc[TF,[1]]访问当个值,比如:df2.iloc[2,1]第3章
数据处理包PandasExcel数据文件读取TXT数据文件读取CSV数据文件读取Excel文件读取第3章
通过read_excel()函数读取Excel文件数据,可以读取指定的工作簿(sheet),也可以设置读取有无表头的数据表。path='一、车次上车人数统计表.xlsx';data=pd.read_excel(path);Excel文件读取第3章
读取文件中Sheet2里的数据data=pd.read_excel(path,'Sheet2')#读取sheet里面的数据Excel文件读取第3章
有时候数据表中没有设置字段,即无表头,读取格式如下:dta=pd.read_excel('dta.xlsx',header=None)#无表头TXT文件读取第3章
通过read_table()函数可以读取TXT文本数据。需要注意的是,TXT文本数据列之间会存在特殊字符作为分隔,常见的有Tab键、空格和逗号。同时还需注意有些文本数据文件是没有设置表头的。importpandasaspddta1=pd.read_table('txt1.txt',header=None)#分隔默认为Tab键,设置无表头。TXT文件读取第3章
dta2=pd.read_table('txt2.txt',sep='\s+')#分隔为空格,带表头TXT文件读取第3章dta3=pd.read_table('txt3.txt',sep=',',header=None)
#分隔为逗号,设置无表头CSV文件读取第3章CSV文件也是一类广泛使用的外部数据文件,对于一般的CSV数据文件可以通过read_csv()函数读取。importpandasaspdA=pd.read_csv('data.csv',sep=',');#逗号分隔CSV文件读取第3章CSV文件可以存储大规模的数据文件,比如单个数据文件大小可达数GB、数十GB,这时候可以采用分块的方式进行读取。importpandasaspdreader=pd.read_csv('data.csv',sep=',',chunksize=50000,usecols=[3,4,10])k=0forAinreader:k=k+1print('第'+str(k)+'次读取数据规模为:',len(A))执行结果如下:第1次读取数据规模为:50000第2次读取数据规模为:50000第3次读取数据规模为:33699CSV文件读取第3章对大规模的CSV文件进行数据探索,可以读取前N行进行分析,比如前1000行importpandasaspdA=pd.read_csv('data.csv',sep=',',nrows=1000)小结:通过pandas包中的函数,读取Excel、TXT和CSV文件,在Python中的数据结构均为DataFrame数据框,进而我们可以利用数据框中的方法进行数据处理和分析了第3章
数据处理包Pandas时间处理函数数据框合并函数数据框关联函数时间处理函数第3章
to_datetime()函数主要是将字符串型的日期转换为时间戳的格式。方便后续的数据处理,比如提取其所属年份、月份、周数、日期、小时、分钟、秒、星期几等简单调用形式为to_datetime(S,format),其中S为待求的日期字符串或日期字符串列表或日期字符串序列,format为日期字符串格式,默认缺省importpandasaspdt1=pd.to_datetime('2015-08-0105:50:43.000001',format='%Y-%m-%d%H:%M:%S.%')t2=pd.to_datetime(['2015-08-0105:50:43','2015-08-0105:51:40'])t3=pd.to_datetime(['2015-08-01','2015-08-02'])t4=pd.to_datetime(pd.Series(['2015-08-01','2015-08-02']))时间处理函数第3章
执行结果如下数据框合并函数第3章
对两个数据框进行水平合并、垂直合并是数据处理与整合中常见的操作,这里介绍concat()函数,可以通过设置轴(Axis)为1或0实现importpandasaspdimportnumpyasnpdict1={'a':[2,2,'kt',6],'b':[4,6,7,8],'c':[6,5,np.nan,6]}dict2={'d':[8,9,10,11],'e':['p',16,10,8]}dict3={'a':[1,2],'b':[2,3],'c':[3,4],'d':[4,5],'e':[5,6]}df1=pd.DataFrame(dict1)df2=pd.DataFrame(dict2)df3=pd.DataFrame(dict3)deldict1,dict2,dict3df4=pd.concat([df1,df2],axis=1)#水平合并df5=pd.concat([df3,df4],axis=0)#垂直合并,有相同的列名,index属性伴随原数据框df5.index=range(6)#重新设置index属性数据框合并函数第3章
执行结果如下数据框关联函数第3章
merge()函数类似于数据库中的SQL关联操作语句,指定关联字段之后可进行内连接(InnerJoin)、左连接(LeftJoin)和右连接(RightJoin)等数据操作importpandasaspddict1={'code':['A01','A01','A01','A02','A02','A02','A03','A03'],'month':['01','02','03','01','02','03','01','02'],'price':[10,12,13,15,17,20,10,9]}dict2={'code':['A01','A01','A01','A02','A02','A02'],'month':['01','02','03','01','02','03'],'vol':[10000,10110,20000,10002,12000,21000]}df1=pd.DataFrame(dict1)df2=pd.DataFrame(dict2)deldict1,dict2df_inner=pd.merge(df1,df2,how='inner',on=['code','month']) #内连接df_left=pd.merge(df1,df2,how='left',on=['code','month']) #左连接df_right=pd.merge(df1,df2,how='right',on=['code','month']) #右连接数据框关联函数第3章
执行结果如下第3章
数据处理包Pandas滚动计算、时间元素提取映射与离散化分组统计滚动计算第3章
滚动计算,也称为移动计算,给定一个数据序列,按指定的前移长度进行统计计算,比如求和、平均值、最大值、最小值、中位数、方差、标准差等。这里前移长度的计算,包含自身,如果待计算的数据序列小于指定的前移长度,则无法计算,用空值“nan”来表示。简单调用形式为:S.rolling(N).统计函数,其中S表示序列,N表示指定的前移长度importpandasaspdlist_data=[10,4,3,8,15,26,17,80,12,5]series_data=pd.Series(list_data)rolling_sum=series_data.rolling(5).sum()rolling_mean=series_data.rolling(5).mean()rolling_max=series_data.rolling(5).max()rolling_min=series_data.rolling(5).min()rolling_median=series_data.rolling(5).median()rolling_var=series_data.rolling(5).var()时间元素提取第3章
对时间格式的序列数据,提取包括年份、月份、周数、日期、小时、分钟、秒、星期几等时间元素。importpandasaspddata=pd.read_excel('dat.xlsx')这里“刷卡时间”数据格式为字符串时间元素提取第3章
对时间格式的序列数据,提取包括年份、月份、周数、日期、小时、分钟、秒、星期几等时间元素。importpandasaspddata=pd.read_excel('dat.xlsx')data['刷卡时间']=pd.to_datetime(data.iloc[:,1],format='%Y-%m-%d%H:%M:%S.%')这里“刷卡时间”数据格式为时间格式时间元素提取第3章
data['year']=data['刷卡时间'].dt.yeardata['month']=data['刷卡时间'].dt.monthdata['day']=data['刷卡时间'].dt.daydata['hour']=data['刷卡时间'].dt.hourdata['minute']=data['刷卡时间'].dt.minutedata['second']=data['刷卡时间'].dt.seconddata['week']=data['刷卡时间'].dt.isocalendar().weekdata['weekday']=data['刷卡时间'].dt.weekday将字符串类型的时间序列转化为时间戳类型。时间元素提取形式式为:“时间戳类型序列.dt.时间元素”,返回的结果依然是序列映射第3章
序列中的映射方法,简单的调用形式为:序列.map(映射参数),其中映射参数一般为字典类型,格式如:{原值1:映射值1,原值2:映射值2,...}。dict_map={'进站':1,'出站':0}data['刷卡类型']=data['刷卡类型'].map(dict_map)离散化第3章
data1=data.iloc[data['刷卡类型'].values==1,[0,5,6]]#取刷卡类型、hour、minute列data1_hour=data1.groupby('hour')['刷卡类型'].sum()#按hour分组,对刷卡类型列求和离散化第3章
bins=[0,100,500,1000]dt1=pd.cut(data1_hour,bins)dt2=pd.cut(data1_hour,bins,labels=[0,1,2])dt_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024物流代理业务合作合同版B版
- 2025版车贷反担保债务重组与债务转移合同3篇
- 二零二五年度房地产抵押合同及抵押物权属变更合同3篇
- 2024版投资入股的协议书
- 二零二五年度绿色环保办公用品供应合同3篇
- 2024无产权房买卖合同样本及签订流程详解6篇
- 黄山学院《数学解题方法》2023-2024学年第一学期期末试卷
- 二零二五年度商砼行业市场拓展与战略合作伙伴关系合同
- 对数方程换底换元法计算举例解析A6
- 二零二五年度物流园区运营管理合作协议2篇
- 汽车安全与法规 (第3版) 课件 第1-3章 汽车安全技术概述、汽车安全技术法规与标准、汽车主动安全性
- 管理ABC-干嘉伟(美团网COO)
- XX市“互联网+”-土地二级市场交易建设方案
- 2023-2024学年度第一学期四年级数学寒假作业
- 大学军事理论课教程第三章军事思想第三节中国古代军事思想
- 驾驶员劳务派遣投标方案
- 续签劳动合同意见征询书
- 水封式排水器的研究
- 导线三角高程计算表(表内自带计算公式)
- 小学数学课堂教学评价表
- 钢管装卸安全管理规定
评论
0/150
提交评论