《智能数据分析与应用》 课件 单元4 数据处理_第1页
《智能数据分析与应用》 课件 单元4 数据处理_第2页
《智能数据分析与应用》 课件 单元4 数据处理_第3页
《智能数据分析与应用》 课件 单元4 数据处理_第4页
《智能数据分析与应用》 课件 单元4 数据处理_第5页
已阅读5页,还剩98页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

pandas数据结构4数据结构的创建01基本属性和方法数据访问0203重置索引041数据结构的创建1数据结构的创建pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas建造在NumPy之上,所以使得pandas在以NumPy为中心的应用中得以容易的使用,而pandas库在与其它第三方科学计算支持库结合时也能够完美的进行集成。在Python中,pandas库的功能十分强大,它可提供高性能的矩阵运算。可用于数据挖掘和数据分析,同时也提供数据清洗功能;支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据等。1数据结构的创建pandas有两个强大的利器。Series(一维数据)是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成,而仅由一组数据也可产生简单的Series对象。DataFrame是pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典。1数据结构的创建Series创建:pandas.Series(

data,

index,

dtype,

copy)

说明参数data数据采用各种形式,例如ndarray,列表,常量。index数据索引标签,必须长度与数据相同。如果未传递索引,则默认自动生成从0开始的整数索引。dtypedtype用于数据类型,默认会自己判断。name设置名称。copy复制数据,默认为False。1数据结构的创建DataFrame的创建:pandas.DataFrame(

data,

index,

columns,

dtype,

copy)

参数说明data数据类型,例如ndarray,series,map,list,dict等。index索引值或行标签。columns列标签,可选。默认为np.arange(n)。dtype数据类型。copy复制数据,默认为False。2基本属性和方法2基本属性和方法pandas.Series的基本属性和方法属性或方法说明axes返回一个行索引(标签)列表。index返回行索引。dtypes返回此对象中的数据类型。empty如果Series完全为空,则返回true;否则返回false。ndimSeries维度。size返回元素个数。values以ndarray的形式返回Series中的实际数据。2基本属性和方法DataFrame的基本属性和方法属性或方法说明T转置行和列。axes返回行索引和列名的列表。index返回行索引。columns返回列名。dtypes返回此对象中的dtypes。empty如果DataFrame完全为空,则为true;否则为false。ndimDataFrame维度。shape返回表示DataFrame大小的元组。size元素个数。values以ndarray的形式返回DataFrame中的实际数据。astype()数据类型转换。to_numpy()输出实际数据的NumPy对象,不包含索引和列名。3数据访问3数据访问示例1:根据位置或索引输出Series对应元素importnumpyasnpimportpandasaspds=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])print(s[0])#输出第一个元素print(s['a'])#输出索引a对应的元素s[0]=6#通过位置对元素进行修改s['b']=7#通过索引对元素进行修改print(s)输出结果如下:3数据访问示例2:检索元素importnumpyasnpimportpandasaspds=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])#根据位置检索元素print(s[:3])#检索前三个元素print(s[-3:])#检索最后三个元素#根据索引检索元素print(s[['a','c','d']])输出结果如下:3数据访问示例3:删除行importpandasaspddata={'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,4],index=['a','b','d'])}df=pd.DataFrame(data)df=df.drop('a')#删除第1行print(df)输出结果如下:onetwob2.02.0c3.0NaNdNaN4.03数据访问示例4:pd.DataFrame.loc()loc函数可以按照索引来进行行列选择importpandasaspddata={'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,4],index=['a','b','d']),'three':pd.Series([10,20,30,40],index=['a','b','c','d'])}df=pd.DataFrame(data)print('DataFrame:\n',df)#读取行:将行标签传递给loc函数来选择行,如果要读取多行,可以通过DataFrame.loc[index1,index2,…]]来进行读取。print("读取行索引为b的行:\n",df.loc['b'])print("读取行索引为b和c的行:\n",df.loc['b':'c'])print('读取全部数据:\n',df.loc[:])#df.loc[:]等价于df.loc[:,:]#读取列print('读取列索引为‘one’的列:\n',df.loc[:,'one'])print('读取列索引为‘two’和‘three’的列:\n',df.loc[:,['two','three']])#读取区块:可以写成“[起始索引,终止索引]”或“起始索引:终止索引”print("读取index为'c','d',column为'two','three'的数据:\n",df.loc[['c','d'],['two','three']])3数据访问输出结果如下:4重置索引4重置索引重置索引分为两种:一种是将现有DataFrame的一列作为列标签。一种是将DataFrame数据与其他的数组或者DataFrame进行对齐。4重置索引示例1:set_index()和reset_index()set_index():将现有的一列设置为列标签。reset_index():将原标签归为数据,重置为默认列标签。importpandasaspddf=pd.DataFrame([['a',1],['c',3],['b',2],['d',4]],columns=['letter','num'])print(df)df1=df.set_index('num')print(df1)print(df1.reset_index())输出结果如下:4重置索引示例1:rename()基于某些映射(字典或系列)或任意函数来重新标记轴。importnumpyasnpimportpandasaspddf=pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])print(df)print("更改行、列名:")print(df.rename(columns={'col1':'c1','col2':'c2','col3':'c3'},index={1:6,3:7,5:8}))输出结果如下:4常用数据标注工具2、图像标注工具LabelImgLabelImg是一个图像标注工具,它是使用python的qt开发的。通过它标注图像生成的标签文件支持xml、PASCALVOC、YOLO。优点:跨平台,支持Linux、MacOS、Windows安装方便使用简单。缺点:只支持矩形框的标注。4常用数据标注工具3、语音标注工具PraatPraat,是目前比较流行也比较专业的语音处理的软件,可以进行语音数据标注、语音录制、语音合成、语音分析等等,同时生成各种语图和报表免费、占用空间小、通用性强、可移植性好等特点ThankYOU!pandas数据处理4数据读写01数据清洗数据转换0203数据合并与拼接041数据读写1数据读写文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。CSV是一种用分隔符分隔的文件格式,因为其分隔符不一定是逗号,所以又被称为字符分隔文件。文本文件以纯文本形式存储表格数据(数字和文本),它是一种通用、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的、无规范的格式)。大量程序都支持CSV或其变体,所以CSV或其变体可以作为大多数程序的输入和输出格式。1数据读写CSV文件根据其定义也是一种文本文件。在数据读取过程中可以使用文本文件的读取函数对CSV文件进行读取。同时,如果文本文件是字符分隔文件,那么可以使用读取CSV文件的函数进行读取。pandas提供了read_table()函数读取文本文件,提供了read_csv()函数读取CSV文件。1数据读写pandas.DataFrame.to_csv(path_or_buf)#csv文件pandas.read_csv(filepath_or_buffer)pandas.DataFrame.to_excel(excel_writer,sheet_name='Sheet1')#xlsx文件pandas.read_excel(io,

sheet_name=0)

2数据清洗2数据清洗数据处理中的数据清洗主要包括对空值、重复值和异常值的处理。空值也称缺失值,一般可以选择删除或者进行填充。重复值一般在检测出来之后直接删除。异常值的判断往往依赖具体分析数据,一般采取删除和替换。这里主要学习对空值和重复值的处理方法。2数据清洗1、缺失值缺失值是指现有数据集中某个或某些属性的值是不完整的。主要有三种处理方法:删除:将存在缺失值的样本删除,或将缺失数据较多的特征删除。补全:对于数值型数据,可以采用均值、中位数、固定值等填充;对于离散型数据,可以采用众数、固定值等填充,也可以训练一个模型来预测缺失数据,如k-means聚类等方法进行补全。不处理:有一些模型自身能够处理数据缺失的情况,在这种情况下不需要对数据进行任何处理。2数据清洗示例1:删除缺失值DataFrame.dropna(axis=0,how=’any’,thresh=None,subset=None,inplace=False)参数说明axis默认为0,表示有空值时,删除整行;axis=1时,表示有空值时去掉整列。how默认为'any',表示如果一行(或一列)里任何一个数据为缺失值就去掉整行(或列),如果设置how='all'表示一行(或列)都缺失才去掉这整行(或列)。thresh设置需要多少非空值的数据才可以保留下来。subset设置想要检查的列。如果是多个列,可以使用列名的列表作为参数。inplace如果设置True,将计算得到的值直接覆盖之前的值并返回None,这里是对源数据进行修改。2数据清洗importnumpyasnpimportpandasaspddata={'Name':pd.Series(['张三','李四','王五','赵六','孙七']),'Math':pd.Series([88,75,np.nan,98,59]),'Chinese':pd.Series([78,88,91,69,65]),'English':pd.Series([65,95,98,72,np.nan]),'Nan':pd.Series([np.nan,np.nan,np.nan,np.nan,np.nan])}df=pd.DataFrame(data)print('删除有缺失值的行:\n',df.dropna())#如果有空值,则删除整行print('删除有缺失值的列:\n',df.dropna(axis=1))#如果有空值,则删除整列print('删除全部为缺失值的列:\n',df.dropna(axis=1,how='all'))#只有当所有值都为Nan时,才会删除2数据清洗示例2:填充缺失值DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None)参数说明value用来填充的值,不能是列表。method默认为None,取值为{'backfill','bfill','pad','ffill',None}。pad/ffill:表示用上一个有效值进行填充。backfill/bfill:表示用下一个有效值进行填充。axis表示轴,{0or'index',1or'columns'}。inplace如果设置True,将计算得到的值直接覆盖之前的值并返回None,这里是对原数据进行修改。limitint,默认为None,表示填充连续Nan值的最大数目,也就是说如果有超过这个值的连续缺失值,会部分填充。如果未指定method,则表示全部填充。2数据清洗importpandasaspdimportnumpyasnpdata={'Name':pd.Series(['张三','李四','王五','赵六','孙七']),'Math':pd.Series([88,75,np.nan,98,59]),'Chinese':pd.Series([78,88,91,69,65]),'English':pd.Series([65,95,98,72,np.nan])}df=pd.DataFrame(data)print("Math:使用0填补缺失值:")print(df['Math'].fillna(0))print('English:使用均值填补缺失值')print(df['English'].fillna(np.mean(df['English'])))2数据清洗2、重复值重复值的处理过程主要包括检测重复值和删除重复值。pandas通过duplicated函数来检测重复值,返回布尔值,重复出现就返回True,否则返回False。通过drop_duplicates函数来删除重复值。pd.DataFrame.duplicated(subset=None,keep='first')pd.DataFrame.drop_duplicates(subset=None,keep='first',inplace=False,ignore_index=False)2数据清洗示例:duplicated()和drop_duplicates()importpandasaspddf=pd.DataFrame(data=[['a',1],['a',2],['b',1],['b',2],['a',1]],columns=['label','num'])print(df)print(df.duplicated())#这一行内容与之前某一行完全相同才会去掉print(df.drop_duplicates())输出结果如下:2数据清洗设置subset='label':print(df.duplicated('label'))#只要label之前出现过就去掉print(df.drop_duplicates('label'))#不重新索引print(df.drop_duplicates('label',ignore_index=True))#重新索引输出结果如下:3数据转换3数据转换不管是为pandas对象应用自定义函数,还是应用第三方函数,都离不开以下几种方法:(1)pipe():用于对整个DataFrame进行操作。(2)apply()/transform():用于对行或列来进行操作。(3)applymap():用于按元素进行操作。3数据转换示例1:transform()transform函数可以对DataFrame进行运算,而且transform可以同时计算多个函数的结果importnumpyasnpimportpandasaspddf=pd.DataFrame(np.random.randn(3,3),columns=['col1','col2','col3'])print(df)print(df.transform(lambdax:x*100))print(df.transform([np.exp,lambdax:x*100]))#多个函数输出结果如下:4数据合并与拼接4数据合并与拼接pandas提供了多种方法对DataFrame进行合并或拼接,常用的包括concat、merge、join和append,本单元主要介绍如何使用append函数。append是只能在axis=0上进行合并pandas.DataFrame.append(self,other,ignore_index=False,sort=False)4重置索引示例:append()importpandasaspddf1=pd.DataFrame({'A':[0,1,2],'B':[3,4,5]})df2=pd.DataFrame({'a':[1,2,3],'c':[4,5,6]})df1.append(df2)输出结果如下:ThankYOU!pandas数据统计4统计方法01数据排序GroupBy0203pandas日期处理041统计方法1统计方法统计方法有助于理解和分析数据的行为示例1:head()、tail()和sample()head():返回前n行,默认n=5。tail():返回最后n行,默认n=5。sample():随机返回5行。1统计方法importnumpyasnpimportpandasaspds=pd.Series(np.random.randn(5),index=['r1','r2','r3','r4','r5'])print("前3行:\n",s.head(3))print("后2行:\n",s.tail(2))data={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),'Age':pd.Series([25,26,25,23,30,29,23]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}df=pd.DataFrame(data)print("前5行:\n",df.head())print("后4行:\n",df.tail(4))输出结果如下:1统计方法示例2:describe()describe():主要介绍数据集各列的数据统计情况(最大值、最小值、标准偏差、分位数等等)。对于非数值型Series对象,返回值的总数,唯一值数量,出现次数最多的值和出现的次数。对于混合型的DataFrame对象,返回数值列的汇总统计量,如果没有数字列,则只显示类别型的列。pd.DataFrame/Series.describe(percentiles=None,include=None,exclude=None,datetime_is_numeric=False)参数说明percentiles指定输出结果包含的分位数。include参数的值为列表,用该参数可以控制包含的数据类型。可以取值为all,表示所有输入的数据类型都被输出。exclude参数的值为列表,用该参数可以控制排除的数据类型。默认为None,表示不排除任何数据类型。datetime_is_numeric布尔类型,默认为Fasle,是否将datetime的数据类型视为数字。1统计方法importpandasaspdd

=

{'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',

'Lee','David','Gasper','Betina','Andres']),

'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),

'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])

}

df

=

pd.DataFrame(d)

print(df.describe())

输出结果如下:1统计方法示例3:info()dinfo():主要介绍数据集各列的数据类型,是否为空值,内存占用情况。importpandasaspdd={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}df=pd.DataFrame(d)print(())输出结果如下:1统计方法pandas常用统计函数函数说明sum()求和,默认axis=0,按列求和。mean()平均值,默认axis=0。std()标准差。count()非空值个数,也就是非Nan值的数量。中位数。mode()众数,默认axis=0,由于众数可能是多个,返回的是DataFrame。min()最小值。max()最大值。abs()绝对值,返回的是DataFrame。prod()乘积。cumsum()求和累计。cumprod()乘积累计。1统计方法示例4:pandas.DataFrame常用统计函数data=np.random.randint(-10,10,25).reshape(5,5)df=pd.DataFrame(data,index=['a','b','c','d','e'])print("求和(按列):",df.sum().values,",求和(按行):",df.sum(axis=1).values)print("平均值:",df.mean().values)print("标准差:",df.std().values)print("非空值个数:",df.count().values)print("中位数:",df.median().values)print("众数(按列):\n",df.mode())print("最小值:",df.min().values,",最大值:",df.max().values)print("绝对值:\n",df.abs())print("乘积:",d().values)print("求和累积:\n",df.cumsum())print("乘积累积:\n",df.cumprod())输出结果如下:2数据排序2数据排序数据处理中的数据清洗主要包括对空值、重复值和异常值的处理。空值也称缺失值,一般可以选择删除或者进行填充。重复值一般在检测出来之后直接删除。异常值的判断往往依赖具体分析数据,一般采取删除和替换。这里主要学习对空值和重复值的处理方法。2数据排序示例1:sort_index()pandas.DataFrame.sort_index(axis=0,level=None,ascending=True,inplace=False,kind='quicksort',na_position='last',ignore_index=False,key=None)参数说明axis{0or'index',1or'columns'},默认为0。level默认None,否则对指定索引级别中的值进行排序。ascending布尔型,Ture表示升序,False表示降序。如果by=['列名1','列名2'],则该参数可以为[True,False],表示第一字段升序,第二字段降序。inplace布尔型,是否用排序后的数据代替现有数据。kind排序方法,{'quicksort','mergesort','heapsort'},默认为快速排序方法。na_position{'first','last'},默认值为last,也就是默认缺失值排在最后。ignore_index默认为False,如果为True,则会将索引表示为0,1,…,n-1。key默认为None,否则表示对索引值应用key函数进行排序。2数据排序importpandasaspddf=pd.DataFrame({'a':[1,2,3,2],'c':[2,1,4,3],'b':[4,2,3,1]},index=[0,2,1,3])print(df)print("按照行标签升序排序:\n",df.sort_index(axis=0,ascending=True))print("按照列标签降序排序:\n",df.sort_index(axis=1,ascending=False))2数据排序示例2:sort_values()根据列数据或者行数据进行排序。pandas.DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind=’quicksort’,na_position=’lase’,ignore_index=False,key=None)by参数用来指定哪几行或者哪几列,用来指定排序的值,其余参数与sort_index基本相同。2数据排序importpandasaspddf=pd.DataFrame({'a':[1,2,3,2],'c':[2,1,4,3],'b':[4,2,3,1]},index=[0,2,1,3])print("按照c列的值进行排序:\n",df.sort_values(by='c'))print("按照a,b列的值进行排序:\n",df.sort_values(by=['a','b']))#先按a的值从小到大排序,再按b的值从小到大排序,注意这里的a=2print("按行排序:\n",df.sort_values(by=2,axis=1))3GroupBy3GroupBypandas提供了一个灵活高效的groupby功能可以对数据集进行切片、切块、摘要等操作。根据一个或多个键(可以是函数、数组或DataFrame列名)拆分pandas对象计算分组摘要统计,如计数、平均值、标准差,或用户自定义函数。3GroupBy示例1:GroupByimportpandasaspddf=pd.DataFrame({'Department':['PDD','SD','PD','PDD','SD','PDD','SD','PD','PDD','SD'],'Name':['Tom','Jery','Andy','Li','Mary','Bread','Tony','Maggie','Jeff','Sean'],'Sex':['Male','Male','Male','Male','Female','Male','Male','Female','Male','Female']})print(df)print(df.groupby('Department'))输出结果如下:3GroupBy示例2:GroupBy运算#读入数据importpandasaspd#PD(Personnel Department):人事部,PDD(Research and Development Department):研发部,SD(Sales Department):销售部df=pd.DataFrame({'Department':['PDD','SD','PD','PDD','SD','PDD','SD','PD','PDD','SD','PD','PD'],'Name':['Tom','Jery','Andy','Li','Mary','Bread','Tony','Maggie','Jeff','Sean','Allen','Emery'],'Sex':['Male','Male','Male','Male','Female','Male','Male','Female','Male','Female','Female','Female'],'Age':[35,25,30,22,49,40,33,19,51,18,23,26],'Salary':[12000,8000,7500,15000,20000,14000,10000,5000,16000,4500,6500,5500]})3GroupBy#统计计算print('统计不同部门的平均工资:\n',df.groupby('Department')['Salary'].mean())print('统计不同性别的平均工资:\n',df.groupby('Sex')['Salary'].mean())print('统计不同部门不同性别的平均工资:\n',df.groupby(['Department','Sex']).mean())print('统计不同部门最高工资:\n',df.groupby('Department')['Salary'].max())输出结果如下:3GroupBy示例3:agg聚合pandas常见的聚合操作包括求最大值(max)、最小值(min)、求和(sum)、均值(mean)、中位数(median)、标准差(std)、方差(var)、计数(count)等#这里直接使用了示例2的数据df.groupby('Department').agg('mean')#对数字求平均值df.groupby('Department').agg(['mean','median'])#多个函数可以放在一个列表中输出结果如下:4pandas日期处理4pandas日期处理pandas提供了多种方法对DataFrame进行合并或拼接,常用的包括concat、merge、join和append,本单元主要介绍如何使用append函数。append是只能在axis=0上进行合并pandas.DataFrame.append(self,other,ignore_index=False,sort=False)4pandas日期处理示例2:pandas.datetime.now()datetime.now():提供当前日期和时间。importpandasaspdprint(pd.datetime.now())

输出结果如下:2021-09-0816:15:41.6246014pandas日期处理示例2:pandas.to_datetime()转换为时间格式,NaT意味着不是一个时间。importpandasaspdprint(pd.to_datetime(pd.Series(['Jul

31,

2009','2010-01-10',

None])))

输出结果如下:0

2009-07-31

1

2010-01-10

2

NaT

dtype:

datetime64[ns]

ThankYOU!药品销售数据分析4提出问题01数据准备02数据预处理03构建模型041提出问题读入股票交易数据

根据背景描述,以A医院的药品销售数据为例,根据提供的销售记录,需要得到以下几个指标:月消费次数:也就是总的消费次数除以月份数,往往也是销售部门重要的指标之一。但要注意的是,同一天同一个人的消费为一次消费。月均消费金额:总的消费金额除以月份数,主要作为部门收益的一个指标。客单价:也就是平均交易金额,即月均消费金额/月消费次数。销售部门看看是否需要提高客单价来提高收益。消费趋势:将每月的销售数量、应收金额和实收金额按月进行统计,查看其消费变化趋势,并分析其原因以助决策者进行参考。药品销量情况:得到销售数量最多的前十种药品信息,这些信息将会有助于加强医院对药房的管理。1读入股票交易数据

通过分析以上指标就是要了解销售部门这段时间销售的业绩如何,收益怎么样,是否可以通过提高客单价来增加收益,哪几个月份销售量较大,以及哪几种药品销量可观,便于医院决策者经营管理。12数据准备2数据准备1、销售数据字段说明

名称含义Datetime销售时间User_ID社保卡号Product_ID商品编号Product_name商品名称Sales_volume销售数量Amount_receivable应收金额Amount_received实收金额2对数据进行统计分析2、pandas读取数据

importnumpyasnpfrompandasimportSeries,DataFrameimportpandasaspdfile_name='D:\\Python\\A医院药品销售数据.xlsx'xls=pd.ExcelFile(file_name)dataDF=xls.parse('Sheet1',dtype='object')dataDF.head()#只列出前5行数据2对数据进行统计分析3、数据查看

dataDF.columnsdataDF.count()dataDF.indexdataDF.shapeRangeIndex(start=0,stop=6578,step=1)(6578,7)2对数据进行统计分析4、描述性统计数据

dataDF.describe()3数据预处理数据预处理

数据预处理过程,或称数据清洗,主要包括以下几个步骤:选择子集列名重命名缺失数据处理数据类型转换数据排序异常值处理33数据预处理1、选择子集

在获取到的数据中,可能数据量非常庞大,并不是每一列都有价值需要进行分析,这时候就需要从整个数据中选取合适的子集进行分析,尽可能从数据中获取最大价值。在本次案例中不需要选取子集,暂时可以忽略这一步。3数据预处理2、列名重命名将所有英文列名改为中文,把列名换成容易理解的名称,可以采用rename函数实现。colNameDict={'Datetime':'销售时间','User_ID':'社保卡号','Product_ID':'商品编码','Product_name':'商品名称','Sales_volume':'销售数量','Amount_receivable':'应收金额','Amount_received':'实收金额'}dataDF.rename(columns=colNameDict,inplace=True)dataDF.head(3)3数据预处理3、缺失数据处理Python中缺失值有3种类型:Python内置的None值;在pandas中,将缺失值表示为NA,表示不可用,即notavailable;对于数值数据,pandas使用浮点值NaN(NotaNumber)表示缺失数据。当报错时有float错误字样,那就是有缺失值,需要处理掉。3数据预处理示例:dropna删除缺失数据print('缺失值处理前数据信息',dataDF.shape)dataDF=dataDF.dropna(subset=['销售时间','社保卡号'],how='any')print('缺失值处理后数据信息',dataDF.shape)输出结果如下:缺失值处理前数据信息(6578,7)缺失值处理后数据信息(6575,7)3数据预处理4、数据类型转换1)将“销售数量”、“应收金额”和“实收金额”改为浮点型(float)数据dataDF['销售数量']=dataDF['销售数量'].astype('float')dataDF['应收金额']=dataDF['应收金额'].astype('float')dataDF['实收金额']=dataDF['实收金额'].astype('float')dataDF.dtypes输出结果如下:3数据预处理2)对“销售时间”使用split函数进行分割,返回Series数据类型salesSer1=dataDF['销售时间']datelist=[]forvalueinsalesSer1:dateSplit=value.split('')dateStr=dateSplit[0]datelist.append(dateStr)dataDF['销售时间']=pd.Series(datelist)print(dataDF.loc[0:3,:])da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论