安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

python数据分析模块numpypandas全解

10月2日 眸中星投稿
  文章目录第3章数组的存储和处理:numpy模块3。1。1创建数组:array()函数3。1。2创建等差数组:arange()函数3。1。3创建随机数组:rand()、randn()、randint()函数3。2。1查看行列数:shape属性3。2。2查看元素个数:size属性3。2。3查看元素的数据类型:dtype属性3。2。4转换元素的数据类型:astype()函数3。2。5查看数组维度:ndim属性3。3。1一维数组元素的选取3。3。2二维数组的元素选取3。4。1一维数组的重塑:reshape()函数3。4。2多维数组的重塑:reshape()函数3。4。3多维重塑为一维:flatten()、ravel()函数3。4。4数组的转置:T属性、transpose()函数3。5。1添加数组元素:append()、insert()函数3。5。2删除数组元素:delete()函数3。5。3处理数组的缺失值:isnan()函数3。5。4处理数组的重复值:unique()函数3。5。5拼接数组:concatenate()、hstack()、vstack()函数3。5。6拆分数组:split()、hsplit()、vsplit()函数3。6。1数组之间的四则运算3。6。2数组元素的统计运算:sum()、mean()、max()函数4。2。1读取Excel数据:readexcel()函数1。读取特定工作簿:sheetname参数2。指定列标签:header参数3。指定行标签:indexcol参数4。读取指定列:usecols参数4。2。2读取csv文件数据:readcsv()函数4。3查看数据的行数和列数4。3。1查看数据的前几行:head()函数4。3。2查看行数和列数:shape属性4。4。1选择行数据:loc()、iloc()函数4。4。2选择列数据:iloc()函数4。4。3同时选择行列数据4。5修改行、列标签:columns、index参数;setindex()函数第五章:pandas模块进阶5。1。1查找数据:isin()函数5。1。2替换数据:replace()函数5。2。1插入数据:insert()函数5。2。2删除元素:drop()函数1。查看缺失值:isnull()函数2。删除缺失值:dropna()函数3。缺失值的填充:fillna()函数1。删除重复行:dropduplicates()函数2。删除某一列的重复值:subset参数3。获取唯一值:unique()函数1。sortvalues()函数排序数据2。rank()函数获取数据的排名5。3。1转置数据表的行列:T属性5。3。2将数据表转换成树形结构:stack()函数5。4。1数据的统计运算:sum()、mean()、max()5。4。2获取数值分布情况:describe()5。4。3计算相关系数:corr()5。4。4分组汇总数据:groupby()5。4。5创建数据透视表:pivottable()5。4。4分组汇总数据:groupby()5。4。5创建数据透视表:pivottable()第3章数组的存储和处理:numpy模块3。1创建数组3。1。1创建数组:array()函数
  一维数组情况:importnumpyasnpanp。array(〔1,2,3,4〕)bnp。array(〔产品编号,销售数量,销售单价,销售金额〕)print(a)print(b)〔1234〕〔产品编号销售数量销售单价销售金额〕
  二维数组情况:importnumpyasnpcnp。array(〔〔1,2,3〕,〔4,5,6〕,〔7,8,9〕〕)print(c)〔〔123〕〔456〕〔789〕〕参数见下表array(object,dtypeNone,copyTrue,orderNone,subokFalse,ndmin0)
  参数
  说明
  object
  必选,为一个序列型对象,如列表、元组、集合等,还可以是一个已创建好的数组
  dtype
  可选,用于指定数组元素的数据类型
  copy
  可选,用于设置是否需要复制对象
  order
  可选,用于指定创建数组的样式
  subok
  可选,默认返回一个与基类的类型一致的数组
  ndmin
  可选,用于指定生成数组的最小维度3。1。2创建等差数组:arange()函数索引从0开始,记左不记右
  3参数情况:importnumpyasnpdnp。arange(1,20,4)第3个参数为步长可选默认为1119,步长4记左不记右print(d)〔1591317〕
  2参数情况:importnumpyasnpdnp。arange(1,20)print(d)〔12345678910111213141516171819〕
  1参数情况:importnumpyasnpdnp。arange(20)print(d)〔012345678910111213141516171819〕参数说明见表arange(start,stop,step,dtypeNone)
  参数
  说明
  start
  可选,表示起始值。省略时默认为0
  stop
  必选,表示结束值。生成的数组元素不包括该值
  step
  可选,表示步长。省略时默认为1。给出该参数则必须给出start参数
  dtype
  可选,表示数组元素类型。默认为None3。1。3创建随机数组:rand()、randn()、randint()函数1。rand()函数:生成元素值在〔0,1)区间的随机数
  一维情况:importnumpyasnpenp。random。rand(3)print(e)〔0。84125590。632205680。7395547〕
  二维情况:importnumpyasnpenp。random。rand(2,3)print(e)〔〔0。036544040。333482490。30089453〕〔0。352913650。566830930。41812811〕〕2。randn()函数:生成元素值在〔0,1)区间的随机数,且符合标准正态分布
  一维情况:importnumpyasnpenp。random。randn(3)print(e)〔0。368091750。072249650。33366574〕
  二维情况:importnumpyasnpenp。random。randn(3,3)print(e)〔〔1。140144990。955778090。94003745〕〔2。617682360。65656760。74041531〕〔0。31384740。682767910。17315121〕〕3。randint()函数:生成指定范围的随机数,记左不记右
  一维情况:importnumpyasnpenp。random。randint(1,5,10)随机数范围:〔1,5)10个数print(e)〔4124132412〕
  二维情况:第三个参数指定维度importnumpyasnpenp。random。randint(1,10,(4,2))随机数范围:〔1,10)print(e)〔〔44〕〔25〕〔33〕〔78〕〕3。2查看数组的属性3。2。1查看行列数:shape属性importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)print(arr。shape)(3,2)
  只查看行数、或者列数importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)print(arr。shape〔0〕)查看行数print(arr。shape〔1〕)查看列数3。2。2查看元素个数:size属性importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)print(arr。size)3。2。3查看元素的数据类型:dtype属性importnumpyasnparrnp。array(〔〔1。3,2,3。6,4〕,〔5,6,7。8,8〕〕)print(arr。dtype)float643。2。4转换元素的数据类型:astype()函数importnumpyasnparrnp。array(〔〔1。3,2,3。6,4〕,〔5,6,7。8,8〕〕)arr1arr。astype(int)print(arr1)print(arr1。dtype)〔〔1234〕〔5678〕〕int323。2。5查看数组维度:ndim属性importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)print(arr。ndim)3。3选取数组元素3。3。1一维数组元素的选取1。选取单个元素importnumpyasnparrnp。array(〔12,2,40,64,56,6,57,18,95,17,21,12〕)print(arr〔0〕)print(arr〔5〕)print(arr〔1〕)倒数第1个print(arr〔4〕)2。选取连续的元素importnumpyasnparrnp。array(〔12,2,40,64,56,6,57,18,95,17,21,12〕)print(arr〔1:6〕)print(arr〔3:2〕)print(arr〔:3〕)print(arr〔:3〕)print(arr〔3:〕)print(arr〔3:〕)〔24064566〕〔6456657189517〕〔12240〕〔1224064566571895〕〔64566571895172112〕〔172112〕3。选取不连续的元素importnumpyasnparrnp。array(〔12,2,40,64,56,6,57,18,95,17,21,12〕)print(arr〔1:5:2〕)〔1,5)步长为2print(arr〔5:1:2〕)第三个参数指定步长print(arr〔::3〕)print(arr〔3::〕)print(arr〔:3:〕)〔264〕〔664〕〔12645717〕〔64566571895172112〕〔12240〕3。3。2二维数组的元素选取
  逗号隔开两个索引1。选取单个元素importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕,〔7,8,9〕,〔10,11,12〕〕)print(arr〔1,2〕)第1行第2列索引从0开始2。选取单行或单列元素importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕,〔7,8,9〕,〔10,11,12〕〕)print(arr〔2〕)print(arr〔:,1〕)〔789〕〔25811〕3。选取某些行或某些列的元素
  某些行importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕,〔7,8,9〕,〔10,11,12〕〕)print(arr〔1:3〕)print(arr〔:2〕)print(arr〔2:〕)〔〔456〕〔789〕〕〔〔123〕〔456〕〕〔〔789〕〔101112〕〕
  某些列importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕,〔13,14,15,16〕〕)print(arr〔:,1:3〕)print(arr〔:,:2〕)print(arr〔:,2:〕)〔〔23〕〔67〕〔1011〕〔1415〕〕〔〔12〕〔56〕〔910〕〔1314〕〕〔〔34〕〔78〕〔1112〕〔1516〕〕4。同时选取行列元素importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕,〔13,14,15,16〕〕)print(arr〔0:2,1:3〕)〔〔23〕〔67〕〕3。4数组的重塑和转置3。4。1一维数组的重塑:reshape()函数importnumpyasnparrnp。array(〔1,2,3,4,5,6,7,8〕)aarr。reshape(2,4)需要重塑前后元素个数相等才行barr。reshape(4,2)print(a)print(b)〔〔1234〕〔5678〕〕〔〔12〕〔34〕〔56〕〔78〕〕3。4。2多维数组的重塑:reshape()函数importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)carr。reshape(4,3)darr。reshape(2,6)print(c)print(d)〔〔123〕〔456〕〔789〕〔101112〕〕〔〔123456〕〔789101112〕〕3。4。3多维重塑为一维:flatten()、ravel()函数importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)print(arr。flatten())降为一维print(arr。ravel())〔123456789101112〕〔123456789101112〕3。4。4数组的转置:T属性、transpose()函数1。T属性importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)print(arr)print(arr。T)〔〔1234〕〔5678〕〔9101112〕〕〔〔159〕〔2610〕〔3711〕〔4812〕〕2。transpose()函数importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)arr1np。transpose(arr)print(arr1)〔〔159〕〔2610〕〔3711〕〔4812〕〕3。5数组的处理3。5。1添加数组元素:append()、insert()函数1。append()函数importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕〕)arr1np。append(arr,〔〔7,8,9〕〕)print(arr1)〔123456789〕
  可以看出append()函数在二维数组中添加元素,结果转为了一维数组。
  那怎么保持二维数组呢?可以设置axis参数按行或者按列添加axis0:按行添加importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕〕)arr1np。append(arr,〔〔7,8,9〕〕,axis0)print(arr1)〔〔123〕〔456〕〔789〕〕axis1:按列添加importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕〕)arr1np。append(arr,〔〔7,8〕,〔9,10〕〕,axis1)print(arr1)〔〔12378〕〔456910〕〕append()函数参数如下append(arr,values,axisNone)
  参数
  说明
  arr
  必选,要添加元素的数组
  values
  必选,要添加的数组元素
  axis
  可选,默认为None。省略此参数时,默认当一维数组尾插元素。为0按行添加;为1按列添加2。insert()函数importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)arr1np。insert(arr,1,〔7,8〕)print(arr1)〔17823456〕
  可以看出先把二维数组降成了一维数组,再在索引为1的位置添加元素。
  那么怎么保持在二维添加元素呢?同样设置axis参数importnumpyasnparrnp。array(〔〔1,2〕,〔3,4〕,〔5,6〕〕)arr1np。insert(arr,1,〔7,8〕,axis0)arr2np。insert(arr,1,〔7,8,9〕,axis1)print(arr1)print(arr2)〔〔12〕〔78〕〔34〕〔56〕〕〔〔172〕〔384〕〔596〕〕insert()参数如下insert(arr,obj,values,axis)
  参数
  说明
  arr
  必选,要插入元素的数组
  obj
  必选,数组的索引值,表示插入元素的位置
  values
  必选,要插入的元素
  axis
  可选,省略此参数时,默认当一维数组插入。为0按行;为1按列3。5。2删除数组元素:delete()函数
  也分按行和按列删除importnumpyasnparrnp。array(〔〔1,2,3〕,〔4,5,6〕,〔7,8,9〕〕)arr1np。delete(arr,2)arr2np。delete(arr,2,axis0)arr3np。delete(arr,2,axis1)print(arr1)print(arr2)print(arr3)〔12456789〕〔〔123〕〔456〕〕〔〔12〕〔45〕〔78〕〕3。5。3处理数组的缺失值:isnan()函数
  标记缺失值:isnan()函数importnumpyasnparrnp。array(〔1,2,3,4,5,6,np。nan,8,9〕)print(arr)print(np。isnan(arr))〔1。2。3。4。5。6。nan8。9。〕〔FalseFalseFalseFalseFalseFalseTrueFalseFalse〕
  补充缺失值:arr〔np。isnan(arr)〕0print(arr)〔1。2。3。4。5。6。0。8。9。〕3。5。4处理数组的重复值:unique()函数importnumpyasnparrnp。array(〔8,4,2,3,5,2,5,5,6,8,8,9〕)arr1np。unique(arr)arr1,arr2np。unique(arr,returncountsTrue)两个返回值arr1为去重后数组arr2为每个元素出现的次数print(arr1)print(arr2)〔2345689〕〔2113131〕3。5。5拼接数组:concatenate()、hstack()、vstack()函数1。concatenate()函数
  同样axis参数可以指定拼接按行还是按列importnumpyasnparr1np。array(〔〔1,2,3〕,〔4,5,6〕〕)arr2np。array(〔〔7,8,9〕,〔10,11,12〕〕)arr3np。concatenate((arr1,arr2),axis0)行方向上拼接arr4np。concatenate((arr1,arr2),axis1)列方向上拼接print(arr3)print(arr4)〔〔123〕〔456〕〔789〕〔101112〕〕〔〔123789〕〔456101112〕〕
  2。hstack()函数:以水平堆叠的方式拼接数组importnumpyasnparr1np。array(〔〔1,2,3〕,〔4,5,6〕〕)arr2np。array(〔〔7,8,9〕,〔10,11,12〕〕)arr3np。hstack((arr1,arr2))print(arr3)〔〔123789〕〔456101112〕〕
  3。vstack()函数:以垂直堆叠的方式拼接数组importnumpyasnparr1np。array(〔〔1,2,3〕,〔4,5,6〕〕)arr2np。array(〔〔7,8,9〕,〔10,11,12〕〕)arr3np。vstack((arr1,arr2))print(arr3)〔〔123〕〔456〕〔789〕〔101112〕〕3。5。6拆分数组:split()、hsplit()、vsplit()函数1。split()函数importnumpyasnparrnp。array(〔1,2,3,4,5,6,7,8,9,10,11,12〕)arr1np。split(arr,2)第2个参数指定拆成几个数组arr2np。split(arr,4)print(arr1)print(arr2)〔array(〔1,2,3,4,5,6〕),array(〔7,8,9,10,11,12〕)〕〔array(〔1,2,3〕),array(〔4,5,6〕),array(〔7,8,9〕),array(〔10,11,12〕)〕
  第二个参数还可以是数组,指定拆分的位置importnumpyasnparrnp。array(〔1,2,3,4,5,6,7,8,9,10,11,12〕)arr3np。split(arr,〔2,6〕)arr4np。split(arr,〔2,3,8,10〕)print(arr3)print(arr4)〔array(〔1,2〕),array(〔3,4,5,6〕),array(〔7,8,9,10,11,12〕)〕〔array(〔1,2〕),array(〔3〕),array(〔4,5,6,7,8〕),array(〔9,10〕),array(〔11,12〕)〕2。hsplit()函数和vsplit()函数
  hsplit()函数:横向拆成几个数组
  vsplit()函数:纵向拆成几个数组importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕,〔13,14,15,16〕〕)arr5np。hsplit(arr,2)arr6np。vsplit(arr,2)print(arr5)print(arr6)〔array(〔〔1,2〕,〔5,6〕,〔9,10〕,〔13,14〕〕),array(〔〔3,4〕,〔7,8〕,〔11,12〕,〔15,16〕〕)〕〔array(〔〔1,2,3,4〕,〔5,6,7,8〕〕),array(〔〔9,10,11,12〕,〔13,14,15,16〕〕)〕3。6数组的运算3。6。1数组之间的四则运算
  数组与数组之间的运算importnumpyasnparr1np。array(〔〔1,2,3,4〕,〔5,6,7,8〕〕)arr2np。array(〔〔9,10,11,12〕,〔13,14,15,16〕〕)arr3arr1arr2对应位置的元素相加arr4arr1arr2对应位置的元素相乘print(arr3)print(arr4)〔〔10121416〕〔18202224〕〕〔〔9203348〕〔6584105128〕〕
  数组与数值的运算importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕〕)arr5arr5每个位置的元素5arr6arr10每个位置的元素10print(arr5)print(arr6)〔〔6789〕〔10111213〕〕〔〔10203040〕〔50607080〕〕3。6。2数组元素的统计运算:sum()、mean()、max()函数1。求和:sum()函数
  可以指定整个数组求和,还是按行或者按列
  axis0:每一列的元素求和
  axis1:每一行的元素求和importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)arr1arr。sum()arr2arr。sum(axis0)每一列的元素求和arr3arr。sum(axis1)每一行的元素求和print(arr1)print(arr2)print(arr3)78〔15182124〕〔102642〕2。求平均值:mean()函数
  axis0:每一列求均值
  axis1:每一行求均值importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)arr1arr。mean()arr2arr。mean(axis0)每一列求均值arr3arr。mean(axis1)每一行求均值print(arr1)print(arr2)print(arr3)6。5〔5。6。7。8。〕〔2。56。510。5〕3。求最值:max()函数
  axis0:每一列求最大值
  axis1:每一行求最大值importnumpyasnparrnp。array(〔〔1,2,3,4〕,〔5,6,7,8〕,〔9,10,11,12〕〕)arr1arr。max()arr2arr。max(axis0)每一列求最大值arr3arr。max(axis1)每一行求最大值print(arr1)print(arr2)print(arr3)12〔9101112〕〔4812〕第4章pandas模块入门4。1数据结构
  pandas有两个重要的数据结构对象:Series和DataFrame。4。1。1Series对象
  Series是创建一个一维数组对象,会自动生成行标签。importpandasaspdspd。Series(〔短裤,毛衣,连衣裙,牛仔裤〕)print(s)0短裤1毛衣2连衣裙3牛仔裤dtype:objectindex参数可以指定行标签importpandasaspds1pd。Series(〔短裤,毛衣,连衣裙,牛仔裤〕,index〔a001,a002,a003,a004〕)print(s1)a001短裤a002毛衣a003连衣裙a004牛仔裤dtype:object使用Series对象还可以基于字典创建数据importpandasaspds2pd。Series({a001:短裤,a002:毛衣,a003:连衣裙,a004:牛仔裤})print(s2)a001短裤a002毛衣a003连衣裙a004牛仔裤dtype:object4。1。2DataFrame对象
  会自动生成行列标签importpandasaspddfpd。DataFrame(〔〔短裤,45〕,〔毛衣,69〕,〔连衣裙,119〕,〔牛仔裤,99〕〕)print(df)010短裤451毛衣692连衣裙1193牛仔裤99可以columns参数指定列标签;index参数指定行标签importpandasaspddf1pd。DataFrame(〔〔短裤,45〕,〔毛衣,69〕,〔连衣裙,119〕,〔牛仔裤,99〕〕,columns〔产品,单价〕,index〔a001,a002,a003,a004〕)print(df1)产品单价a001短裤45a002毛衣69a003连衣裙119a004牛仔裤99
  也可以用字典形式生成数据importpandasaspddf3pd。DataFrame({产品:〔短裤,毛衣,连衣裙,牛仔裤〕,单价:〔45,69,119,99〕})print(df3)产品单价0短裤451毛衣692连衣裙1193牛仔裤99
  在用字典生成数据的基础上,同时指定行标签importpandasaspddf3pd。DataFrame({产品:〔短裤,毛衣,连衣裙,牛仔裤〕,单价:〔45,69,119,99〕},index〔a001,a002,a003,a004〕)print(df3)产品单价a001短裤45a002毛衣69a003连衣裙119a004牛仔裤994。2读取数据4。2。1读取Excel数据:readexcel()函数1。读取特定工作簿:sheetname参数
  例如对下表的数据进行读取
  4月是第四个表,我们应把sheetname参数指定为3;因为索引是从0开始的。importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱1005d006条码纸6卷34
  可以看出readexcel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。2。指定列标签:header参数header参数可以指定列标签
  可以看出不给出header参数时,该参数默认为0。importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,header0)print(data)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱1005d006条码纸6卷34
  header1时结果如下:importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,header1)print(data)d001投影仪5台20000d002马克笔5盒3001d003打印机1台2982d004点钞机1台3493d005复印纸2箱1004d006条码纸6卷34
  headerNone时结果如下:importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,headerNone)print(data)01230订单编号产品数量金额1d001投影仪5台20002d002马克笔5盒3003d003打印机1台2984d004点钞机1台3495d005复印纸2箱1006d006条码纸6卷343。指定行标签:indexcol参数该参数默认为None
  indexcol0时,第0列为列标签importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data)产品数量金额订单编号d001投影仪5台2000d002马克笔5盒300d003打印机1台298d004点钞机1台349d005复印纸2箱100d006条码纸6卷34
  indexcol0时importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol1)print(data)订单编号数量金额产品投影仪d0015台2000马克笔d0025盒300打印机d0031台298点钞机d0041台349复印纸d0052箱100条码纸d0066卷344。读取指定列:usecols参数
  usecols〔2〕:指定第二列importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,usecols〔2〕)print(data)数量05台15盒21台31台42箱56卷
  指定多列importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,usecols〔1,3〕)print(data)产品金额0投影仪20001马克笔3002打印机2983点钞机3494复印纸1005条码纸344。2。2读取csv文件数据:readcsv()函数
  数据如下:
  〔外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(imgj1SHxY8y1637655972909)(C:Users14051AppDataRoamingTyporayporauserimagesimage20211114192949607。png)〕importpandasaspddatapd。readcsv(订单表。csv)print(data)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱1005d006条码纸6卷34nrows参数可以指定显示的行数
  nrows3时importpandasaspddatapd。readcsv(订单表。csv,nrows3)print(data)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2984。3查看数据的行数和列数4。3。1查看数据的前几行:head()函数
  head()函数中参数为空默认前5行importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。head())订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱100
  指定head(3)时如下importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。head(3))订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2984。3。2查看行数和列数:shape属性
  numpy模块也是shapeimportpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data)print(data。shape)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱1005d006条码纸6卷34(6,4)4。3。3查看数据的类型1。info()函数importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。info())classpandas。core。frame。DataFrameRangeIndex:6entries,0to5Datacolumns(total4columns):ColumnNonNullCountDtype0订单编号6nonnullobject1产品6nonnullobject2数量6nonnullobject3金额6nonnullint64dtypes:int64(1),object(3)memoryusage:320。0bytesNone2。dtype参数
  查看特定列的书库类型importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data〔金额〕。dtype)int643。astype()函数
  特定列数据类型转换importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)data〔金额〕data〔金额〕。astype(float64)print(data)print(data〔金额〕。dtype)订单编号产品数量金额0d001投影仪5台2000。01d002马克笔5盒300。02d003打印机1台298。03d004点钞机1台349。04d005复印纸2箱100。05d006条码纸6卷34。0float644。4选择数据4。4。1选择行数据:loc()、iloc()函数
  先查看一下所有数据importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)indexcol指定行标签print(data)产品数量金额订单编号d001投影仪5台2000d002马克笔5盒300d003打印机1台298d004点钞机1台349d005复印纸2箱100d006条码纸6卷341。挑选单行数据loc()函数加行标签指定行importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data。loc〔d001〕)产品投影仪数量5台金额2000Name:d001,dtype:objectiloc()函数加索引指定行号importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data。iloc〔2〕)产品打印机数量1台金额298Name:d003,dtype:object2。挑选多行数据
  与单行相比,结果显示的格式不一样了importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data。loc〔〔d002,d004〕〕)产品数量金额订单编号d002马克笔5盒300d004点钞机1台349
  iloc()挑选:importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data。iloc〔〔1,5〕〕)产品数量金额订单编号d002马克笔5盒300d006条码纸6卷34产品数量金额
  或者给出区间importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)print(data。iloc〔1:5〕)产品数量金额订单编号d002马克笔5盒300d003打印机1台298d004点钞机1台349d005复印纸2箱1003。挑选满足条件的行importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)adata〔金额〕300挑选金额300的行print(data〔a〕)产品数量金额订单编号d003打印机1台298d005复印纸2箱100d006条码纸6卷344。4。2选择列数据:iloc()函数1。挑选单列数据importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data〔产品〕)0投影仪1马克笔2打印机3点钞机4复印纸5条码纸Name:产品,dtype:object2。挑选多列数据
  挑选数据要么标签,要么索引挑选importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data〔〔产品,金额〕〕)产品金额0投影仪20001马克笔3002打印机2983点钞机3494复印纸1005条码纸34
  或者importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。iloc〔:,〔1,3〕〕)产品金额0投影仪20001马克笔3002打印机2983点钞机3494复印纸1005条码纸34
  或者写成区间importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。iloc〔:,1:3〕)产品数量0投影仪5台1马克笔5盒2打印机1台3点钞机1台4复印纸2箱5条码纸6卷4。4。3同时选择行列数据
  标签挑选importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)data1data。loc〔〔d001,d005〕,〔产品,金额〕〕print(data1)产品金额订单编号d001投影仪2000d005复印纸100
  或者索引挑选importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3,indexcol0)data2data。iloc〔〔2,4〕,〔0,2〕〕print(data2)产品金额订单编号d003打印机298d005复印纸1004。5修改行、列标签:columns、index参数;setindex()函数
  先查看一下数据importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data)订单编号产品数量金额0d001投影仪5台20001d002马克笔5盒3002d003打印机1台2983d004点钞机1台3494d005复印纸2箱1005d006条码纸6卷34setindex()设置行标签importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)print(data。setindex(订单编号))产品数量金额订单编号d001投影仪5台2000d002马克笔5盒300d003打印机1台298d004点钞机1台349d005复印纸2箱100d006条码纸6卷34
  或者用字典一对一修改importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)datadata。rename(columns{订单编号:编号,产品:产品名称,数量:订单数量,金额:订单金额},index{0:A,1:B,2:C,3:D,4:E,5:F})print(data)编号产品名称订单数量订单金额Ad001投影仪5台2000Bd002马克笔5盒300Cd003打印机1台298Dd004点钞机1台349Ed005复印纸2箱100Fd006条码纸6卷34columns、index参数分别修改列、行标签importpandasaspddatapd。readexcel(订单表。xlsx,sheetname3)data。columns〔编号,产品名称,订单数量,订单金额〕data。index〔A,B,C,D,E,F〕print(data)编号产品名称订单数量订单金额Ad001投影仪5台2000Bd002马克笔5盒300Cd003打印机1台298Dd004点钞机1台349Ed005复印纸2箱100Fd006条码纸6卷34第五章:pandas模块进阶5。1数据的查找和替换5。1。1查找数据:isin()函数
  〔外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(imga6QKIoie1637655972912)(C:Users14051AppDataRoamingTyporayporauserimagesimage20211123110431201。png)〕importpandasaspddatapd。readexcel(产品统计表。xlsx)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048502a003背包166523368149511273a004手提包3614726936382228864a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包5812458336471923828
  isin()函数查看表中是否有该值data1data。isin(〔a005,钱包〕)print(data1)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0FalseFalseFalseFalseFalseFalseFalseFalse1FalseTrueFalseFalseFalseFalseFalseFalse2FalseFalseFalseFalseFalseFalseFalseFalse3FalseFalseFalseFalseFalseFalseFalseFalse4TrueTrueFalseFalseFalseFalseFalseFalse5FalseFalseFalseFalseFalseFalseFalseFalse6FalseFalseFalseFalseFalseFalseFalseFalse
  查看特定列是否有该值data2data〔产品〕。isin(〔手提包〕)print(data2)0False1False2False3True4False5False6FalseName:产品,dtype:bool5。1。2替换数据:replace()函数importpandasaspddatapd。readexcel(产品统计表。xlsx)data。replace(背包,挎包)并没有替换print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048502a003背包166523368149511273a004手提包3614726936382228864a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包5812458336471923828
  可以看出上述代码并没有替换,那怎么替换呢?1。一对一替换importpandasaspddatapd。readexcel(产品统计表。xlsx)data。replace(背包,挎包,inplaceTrue)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001挎包166560960390029401a002钱包90187504500935048502a003挎包166523368149511273a004手提包3614726936382228864a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包58124583364719238282。多对一替换importpandasaspddatapd。readexcel(产品统计表。xlsx)data。replace(〔背包,手提包〕,挎包,inplaceTrue)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001挎包166560960390029401a002钱包90187504500935048502a003挎包166523368149511273a004挎包3614726936382228864a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包58124583364719238283。多对多替换importpandasaspddatapd。readexcel(产品统计表。xlsx)data。replace({背包:挎包,16:39,65:88},inplaceTrue)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001挎包398860960390029401a002钱包90187504500935048502a003挎包398823368149511273a004手提包3614726936382228864a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包58124583364719238285。2数据的处理5。2。1插入数据:insert()函数
  末尾插入一列importpandasaspddatapd。readexcel(产品统计表。xlsx)data〔品牌〕〔AM,DE,SR,AM,TY,DE,UD〕print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)品牌0a001背包16656096039002940AM1a002钱包9018750450093504850DE2a003背包16652336814951127SR3a004手提包361472693638222886AM4a005钱包90187787020145867566TY5a006单肩包5812463365478124158DE6a007单肩包5812458336471923828UD
  指定插入到哪列importpandasaspddatapd。readexcel(产品统计表。xlsx)data。insert(2,品牌,〔AM,DE,SR,AM,TY,DE,UD〕)print(data)编号产品品牌成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包AM166560960390029401a002钱包DE90187504500935048502a003背包SR166523368149511273a004手提包AM3614726936382228864a005钱包TY901877870201458675665a006单肩包DE58124633654781241586a007单肩包UD58124583364719238285。2。2删除元素:drop()函数
  axis参数可以指定删除行还是删除列1。删除列
  指定标签删除importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。drop(〔成本价(元个),成本(元)〕,axis1)print(a)编号产品销售价(元个)数量(个)收入(元)利润(元)0a001背包6560390029401a002钱包18750935048502a003背包6523149511273a004手提包14726382228864a005钱包187781458675665a006单肩包12463781241586a007单肩包1245871923828
  指定索引删除importpandasaspddatapd。readexcel(产品统计表。xlsx)bdata。drop(data。columns〔〔2,5〕〕,axis1)print(b)编号产品销售价(元个)数量(个)收入(元)利润(元)0a001背包6560390029401a002钱包18750935048502a003背包6523149511273a004手提包14726382228864a005钱包187781458675665a006单肩包12463781241586a007单肩包1245871923828
  方法三importpandasaspddatapd。readexcel(产品统计表。xlsx)cdata。drop(columns〔成本价(元个),成本(元)〕)print(c)编号产品销售价(元个)数量(个)收入(元)利润(元)0a001背包6560390029401a002钱包18750935048502a003背包6523149511273a004手提包14726382228864a005钱包187781458675665a006单肩包12463781241586a007单肩包12458719238282。删除行
  指定行标签删除importpandasaspddatapd。readexcel(产品统计表。xlsx,indexcol0)adata。drop(〔a001,a004〕,axis0)print(a)产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)编号a002钱包9018750450093504850a003背包16652336814951127a005钱包90187787020145867566a006单肩包5812463365478124158a007单肩包5812458336471923828
  指定索引删除importpandasaspddatapd。readexcel(产品统计表。xlsx,indexcol0)bdata。drop(data。index〔〔0,4〕〕,axis0)print(b)产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)编号a002钱包9018750450093504850a003背包16652336814951127a004手提包361472693638222886a006单肩包5812463365478124158a007单肩包5812458336471923828
  方法三:importpandasaspddatapd。readexcel(产品统计表。xlsx,indexcol0)cdata。drop(index〔a001,a004〕)print(c)产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)编号a002钱包9018750450093504850a003背包16652336814951127a005钱包90187787020145867566a006单肩包5812463365478124158a007单肩包58124583364719238285。2。3处理缺失值1。查看缺失值:isnull()函数
  先查看所有数据importpandasaspddatapd。readexcel(产品统计表1。xlsx)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包16。06560960。0390029401a002钱包90。0187504500。0935048502a003背包NaN6523368。0149511273a004手提包36。014726936。0382228864a005钱包90。0187787020。01458675665a006单肩包58。0124633654。0781241586a007单肩包58。012458NaN71923828
  info()函数查看数据类型,还可以查看是否有缺失值importpandasaspddatapd。readexcel(产品统计表1。xlsx)data。info()classpandas。core。frame。DataFrameRangeIndex:7entries,0to6Datacolumns(total8columns):ColumnNonNullCountDtype0编号7nonnullobject1产品7nonnullobject2成本价(元个)6nonnullfloat643销售价(元个)7nonnullint644数量(个)7nonnullint645成本(元)6nonnullfloat646收入(元)7nonnullint647利润(元)7nonnullint64dtypes:float64(2),int64(4),object(2)memoryusage:576。0bytes
  isnull()函数查看是否有缺失值
  在numpy模块中用isnan()函数importpandasaspddatapd。readexcel(产品统计表1。xlsx)adata。isnull()print(a)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0FalseFalseFalseFalseFalseFalseFalseFalse1FalseFalseFalseFalseFalseFalseFalseFalse2FalseFalseTrueFalseFalseFalseFalseFalse3FalseFalseFalseFalseFalseFalseFalseFalse4FalseFalseFalseFalseFalseFalseFalseFalse5FalseFalseFalseFalseFalseFalseFalseFalse6FalseFalseFalseFalseFalseTrueFalseFalse2。删除缺失值:dropna()函数
  删除有缺失值的行importpandasaspddatapd。readexcel(产品统计表1。xlsx)bdata。dropna()print(b)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包16。06560960。0390029401a002钱包90。0187504500。0935048503a004手提包36。014726936。0382228864a005钱包90。0187787020。01458675665a006单肩包58。0124633654。078124158
  删除整行都为缺失值的行:需要指定how参数importpandasaspddatapd。readexcel(产品统计表1。xlsx)cdata。dropna(howall)print(c)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包16。06560960。0390029401a002钱包90。0187504500。0935048502a003背包NaN6523368。0149511273a004手提包36。014726936。0382228864a005钱包90。0187787020。01458675665a006单肩包58。0124633654。0781241586a007单肩包58。012458NaN719238283。缺失值的填充:fillna()函数importpandasaspddatapd。readexcel(产品统计表1。xlsx)ddata。fillna(0)缺失值全部填充为0print(d)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包16。06560960。0390029401a002钱包90。0187504500。0935048502a003背包0。06523368。0149511273a004手提包36。014726936。0382228864a005钱包90。0187787020。01458675665a006单肩包58。0124633654。0781241586a007单肩包58。0124580。071923828
  不同列的缺失值设置不同的填充值importpandasaspddatapd。readexcel(产品统计表1。xlsx)edata。fillna({成本价(元个):16,成本(元):3364})print(e)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包16。06560960。0390029401a002钱包90。0187504500。0935048502a003背包16。06523368。0149511273a004手提包36。014726936。0382228864a005钱包90。0187787020。01458675665a006单肩包58。0124633654。0781241586a007单肩包58。0124583364。0719238285。2。4处理重复值importpandasaspddatapd。readexcel(产品统计表2。xlsx)print(data)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048502a003背包166523368149511273a004手提包3614726936382228864a004手提包361472693638222886重复5a005钱包901877870201458675666a006单肩包58124633654781241581。删除重复行:dropduplicates()函数adata。dropduplicates()print(a)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048502a003背包166523368149511273a004手提包3614726936382228865a005钱包901877870201458675666a006单肩包58124633654781241582。删除某一列的重复值:subset参数
  默认保留第一个重复值所在的行,删除其他重复值所在的行bdata。dropduplicates(subset产品)print(b)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048503a004手提包3614726936382228866a006单肩包5812463365478124158
  保留第一个重复值所在的行cdata。dropduplicates(subset产品,keepfirst)print(c)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)0a001背包166560960390029401a002钱包90187504500935048503a004手提包3614726936382228866a006单肩包5812463365478124158
  保留最后一个重复值所在的行ddata。dropduplicates(subset产品,keeplast)print(d)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)2a003背包166523368149511274a004手提包3614726936382228865a005钱包901877870201458675666a006单肩包5812463365478124158
  是重复的就删除edata。dropduplicates(subset产品,keepFalse)print(e)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)6a006单肩包58124633654781241583。获取唯一值:unique()函数fdata〔产品〕。unique()print(f)〔背包钱包手提包单肩包〕5。2。5排序数据1。sortvalues()函数排序数据importpandasaspddatapd。readexcel(产品统计表2。xlsx)adata。sortvalues(by数量(个),ascendingTrue)第一个参数指定列第二个参数指定升序print(a)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)2a003背包166523368149511273a004手提包3614726936382228864a004手提包3614726936382228861a002钱包90187504500935048500a001背包166560960390029406a006单肩包58124633654781241585a005钱包90187787020145867566
  降序如下bdata。sortvalues(by数量(个),ascendingFalse)print(b)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)5a005钱包901877870201458675666a006单肩包58124633654781241580a001背包166560960390029401a002钱包90187504500935048503a004手提包3614726936382228864a004手提包3614726936382228862a003背包166523368149511272。rank()函数获取数据的排名cdata〔利润(元)〕。rank(methodaverage,ascendingFalse)指定利润降序排序有重复值则返回重复值的平均排名print(c)04。012。027。035。545。551。063。0Name:利润(元),dtype:float64
  参数指定first时,表示在数据有重复值时,越先出现的数据排名越靠前ddata〔利润(元)〕。rank(methodfirst,ascendingFalse)print(d)04。012。027。035。046。051。063。0Name:利润(元),dtype:float645。2。6筛选数据
  获取产品为单肩包的行数据importpandasaspddatapd。readexcel(产品统计表。xlsx)adata〔data〔产品〕单肩包〕获取产品为单肩包的行数据print(a)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)5a006单肩包58124633654781241586a007单肩包5812458336471923828
  获取数量60的行数据bdata〔data〔数量(个)〕60〕获取数量60的行数据print(b)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)4a005钱包901877870201458675665a006单肩包5812463365478124158
  获取产品为单肩包且数量60的行数据cdata〔(data〔产品〕单肩包)(data〔数量(个)〕60)〕print(c)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)5a006单肩包5812463365478124158
  获取产品为单肩包或数量60的行数据ddata〔(data〔产品〕单肩包)(data〔数量(个)〕60)〕print(d)编号产品成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)4a005钱包901877870201458675665a006单肩包58124633654781241586a007单肩包58124583364719238285。3数据表的处理5。3。1转置数据表的行列:T属性importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。Tprint(a)0123456编号a001a002a003a004a005a006a007产品背包钱包背包手提包钱包单肩包单肩包成本价(元个)16901636905858销售价(元个)6518765147187124124数量(个)60502326786358成本(元)9604500368936702036543364收入(元)39009350149538221458678127192利润(元)29404850112728867566415838285。3。2将数据表转换成树形结构:stack()函数importpandasaspddatapd。readexcel(产品统计表3。xlsx)print(data)编号产品销售价(元个)数量(个)收入(元)0a001背包656039001a002钱包1875093502a003单肩包124587192
  stack()函数转换成树形结构adata。stack()print(a)0编号a001产品背包销售价(元个)65数量(个)60收入(元)39001编号a002产品钱包销售价(元个)187数量(个)50收入(元)93502编号a003产品单肩包销售价(元个)124数量(个)58收入(元)7192dtype:object5。3。3数据表的拼接importpandasaspddata1pd。readexcel(产品表。xlsx,sheetname0)第0张工作簿data2pd。readexcel(产品表。xlsx,sheetname1)第1张工作簿print(data1)print(data2)员工编号员工姓名员工性别0a001张三男1a002李四女2a003王五男3a004赵六男员工编号员工姓名销售业绩0a001张三3600001a002李四4580002a003王五3690003a004赵六4500004a005钱七5000001。merge()函数apd。merge(data1,data2)行取交集列取并集print(a)员工编号员工姓名员工性别销售业绩0a001张三男3600001a002李四女4580002a003王五男3690003a004赵六男450000
  how参数指定外连接bpd。merge(data1,data2,howouter)行取并集列取并集print(b)员工编号员工姓名员工性别销售业绩0a001张三男3600001a002李四女4580002a003王五男3690003a004赵六男4500004a005钱七NaN500000
  on参数指定按哪一列合并cpd。merge(data1,data2,on员工姓名)print(c)员工编号x员工姓名员工性别员工编号y销售业绩0a001张三男a0013600001a002李四女a0024580002a003王五男a0033690003a004赵六男a0044500002。concat()函数
  concat()函数采用全连接的方式,没有的数设置为缺失值dpd。concat(〔data1,data2〕)print(d)员工编号员工姓名员工性别销售业绩0a001张三男NaN1a002李四女NaN2a003王五男NaN3a004赵六男NaN0a001张三NaN360000。01a002李四NaN458000。02a003王五NaN369000。03a004赵六NaN450000。04a005钱七NaN500000。0
  重置行标签epd。concat(〔data1,data2〕,ignoreindexTrue)重置行标签print(e)员工编号员工姓名员工性别销售业绩0a001张三男NaN1a002李四女NaN2a003王五男NaN3a004赵六男NaN4a001张三NaN360000。05a002李四NaN458000。06a003王五NaN369000。07a004赵六NaN450000。08a005钱七NaN500000。03。append()函数
  效果与concat()一样fdata1。append(data2)print(f)员工编号员工姓名员工性别销售业绩0a001张三男NaN1a002李四女NaN2a003王五男NaN3a004赵六男NaN0a001张三NaN360000。01a002李四NaN458000。02a003王五NaN369000。03a004赵六NaN450000。04a005钱七NaN500000。0
  末尾添加行元素gdata1。append({员工编号:a005,员工姓名:孙七,员工性别:男},ignoreindexTrue)print(g)员工编号员工姓名员工性别0a001张三男1a002李四女2a003王五男3a004赵六男4a005孙七男5。4数据的运算5。4。1数据的统计运算:sum()、mean()、max()1。求和:sum()importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。sum()print(a)编号a001a002a003a004a005a006a007产品背包钱包背包手提包钱包单肩包单肩包成本价(元个)364销售价(元个)899数量(个)358成本(元)20802收入(元)48157利润(元)27355dtype:object
  指定列求和bdata〔利润(元)〕。sum()print(b)2。求平均值:mean()cdata。mean()print(c)成本价(元个)52。000000销售价(元个)128。428571数量(个)51。142857成本(元)2971。714286收入(元)6879。571429利润(元)3907。857143dtype:float64
  指定列求均值ddata〔利润(元)〕。mean()print(d)3907。85714285714273。求最值:max()edata。max()print(e)编号a007产品钱包成本价(元个)90销售价(元个)187数量(个)78成本(元)7020收入(元)14586利润(元)7566dtype:object
  指定列求最值fdata〔利润(元)〕。max()print(f)5。4。2获取数值分布情况:describe()importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。describe()print(a)成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)count7。0000007。0000007。0000007。0000007。0000007。000000mean52。000000128。42857151。1428572971。7142866879。5714293907。857143std31。11269850。48384920。0535002391。4476594352。7633312002。194498min16。00000065。00000023。000000368。0000001495。0000001127。0000002526。00000094。50000038。000000948。0000003861。0000002913。0000005058。000000124。00000058。0000003364。0000007192。0000003828。0000007574。000000167。00000061。5000004077。0000008581。0000004504。000000max90。000000187。00000078。0000007020。00000014586。0000007566。000000
  获取单列的bdata〔利润(元)〕。describe()print(b)count7。000000mean3907。857143std2002。194498min1127。000000252913。000000503828。000000754504。000000max7566。000000Name:利润(元),dtype:float645。4。3计算相关系数:corr()importpandasaspddatapd。readexcel(相关性分析。xlsx)print(data)代理商编号年销售额(万元)年广告费投入额(万元)成本费用(万元)管理费用(万元)0A00120。515。62。000。801A00324。516。72。540。942B00231。820。42。960。883B00634。922。63。020。794B00839。425。73。140。845C00344。528。84。000。806C00449。632。16。840。857C00754。835。95。600。918D00658。538。76。450。90
  corr()函数获取相关系数adata。corr()print(a)年销售额(万元)年广告费投入额(万元)成本费用(万元)管理费用(万元)年销售额(万元)1。0000000。9962750。9144280。218317年广告费投入额(万元)0。9962751。0000000。9184040。223187成本费用(万元)0。9144280。9184041。0000000。284286管理费用(万元)0。2183170。2231870。2842861。000000
  获取指定列与其他列的相关系数bdata。corr()〔年销售额(万元)〕print(b)年销售额(万元)1。000000年广告费投入额(万元)0。996275成本费用(万元)0。914428管理费用(万元)0。218317Name:年销售额(万元),dtype:float645。4。4分组汇总数据:groupby()
  〔外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img46g9qgQw1637655972913)(C:Users14051AppDataRoamingTyporayporauserimagesimage20211123135643804。png)〕importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。groupby(产品)根据产品列分组print(a)pandas。core。groupby。generic。DataFrameGroupByobjectat0x00000213943E4640
  groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。bdata。groupby(产品)。sum()print(b)成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)产品单肩包1162481217018150047986手提包361472693638222886背包3213083132853954067钱包180374128115202393612416
  分组后获取指定列的汇总情况cdata。groupby(产品)〔利润(元)〕。sum()print(c)产品单肩包7986手提包2886背包4067钱包12416Name:利润(元),dtype:int64
  获取多列的汇总情况ddata。groupby(产品)〔数量(个),利润(元)〕。sum()print(d)数量(个)利润(元)产品单肩包1217986手提包262886背包834067钱包128124165。4。5创建数据透视表:pivottable()values参数用于指定要计算的列index参数用于指定一个列作为数据透视表的行标签aggfunc参数用于指定参数values的计算类型importpandasaspddatapd。readexcel(产品统计表。xlsx)apd。pivottable(data,values利润(元),index产品,aggfuncsum)data。groupby(产品)〔利润(元)〕。sum()同样功能print(a)利润(元)产品单肩包7986手提包2886背包4067钱包12416
  获取多列的情况bpd。pivottable(data,values〔利润(元),成本(元)〕,index产品,aggfuncsum)print(b)利润(元)成本(元)产品单肩包79867018手提包2886936背包40671328钱包1241611520
  tapd。readexcel(‘相关性分析。xlsx’)
  print(data)python代理商编号年销售额(万元)年广告费投入额(万元)成本费用(万元)管理费用(万元)0A00120。515。62。000。801A00324。516。72。540。942B00231。820。42。960。883B00634。922。63。020。794B00839。425。73。140。845C00344。528。84。000。806C00449。632。16。840。857C00754。835。95。600。918D00658。538。76。450。90
  corr()函数获取相关系数adata。corr()print(a)年销售额(万元)年广告费投入额(万元)成本费用(万元)管理费用(万元)年销售额(万元)1。0000000。9962750。9144280。218317年广告费投入额(万元)0。9962751。0000000。9184040。223187成本费用(万元)0。9144280。9184041。0000000。284286管理费用(万元)0。2183170。2231870。2842861。000000
  获取指定列与其他列的相关系数bdata。corr()〔年销售额(万元)〕print(b)年销售额(万元)1。000000年广告费投入额(万元)0。996275成本费用(万元)0。914428管理费用(万元)0。218317Name:年销售额(万元),dtype:float645。4。4分组汇总数据:groupby()
  〔外链图片转存中(img46g9qgQw1637655972913)〕importpandasaspddatapd。readexcel(产品统计表。xlsx)adata。groupby(产品)根据产品列分组print(a)pandas。core。groupby。generic。DataFrameGroupByobjectat0x00000213943E4640
  groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。bdata。groupby(产品)。sum()print(b)成本价(元个)销售价(元个)数量(个)成本(元)收入(元)利润(元)产品单肩包1162481217018150047986手提包361472693638222886背包3213083132853954067钱包180374128115202393612416
  分组后获取指定列的汇总情况cdata。groupby(产品)〔利润(元)〕。sum()print(c)产品单肩包7986手提包2886背包4067钱包12416Name:利润(元),dtype:int64
  获取多列的汇总情况ddata。groupby(产品)〔数量(个),利润(元)〕。sum()print(d)数量(个)利润(元)产品单肩包1217986手提包262886背包834067钱包128124165。4。5创建数据透视表:pivottable()values参数用于指定要计算的列index参数用于指定一个列作为数据透视表的行标签aggfunc参数用于指定参数values的计算类型importpandasaspddatapd。readexcel(产品统计表。xlsx)apd。pivottable(data,values利润(元),index产品,aggfuncsum)data。groupby(产品)〔利润(元)〕。sum()同样功能print(a)利润(元)产品单肩包7986手提包2886背包4067钱包12416
  获取多列的情况bpd。pivottable(data,values〔利润(元),成本(元)〕,index产品,aggfuncsum)print(b)利润(元)成本(元)产品单肩包79867018手提包2886936背包40671328钱包1241611520
投诉 评论 转载

移动卡想换套餐,换什么套餐好?移动现在还是有许多比较实惠的套餐,而且在国家携号转网业务的开展之下,移动还是有持续推出一系列的优惠套餐,那么下面我们一起来说一说。1。移动8元天悦卡套餐这款套餐是移动最为……北京开启乘用车无人化运营试点,上汽发力智能网联新赛道成果斐然无人驾驶正在加速落地。四月底,北京率先放开了自动驾驶主驾无人许可,成为国内首个开启乘用车无人化运营试点的城市。百度萝卜快跑、小马智行成为北京地区首批获准开启无人化自动驾驶出行服……iOS15。3正式版推送,苹果建议所有用户升级距离上一个正式版发布已有一个多月,苹果终于在今日推送了iOS15。3正式版,更新包大小在1GB左右注意:iOS15。3正式版的版本号(19D50)大于上周的RC版,所以R……国内首个5G套餐已出炉?月租50元享5TB流量,对不起我并不说起5G大家都很熟悉,作为下一代通信技术,5G相比目前的4G可谓是优势多多,比如更快的网速、更低的延迟率以及更广的链接,而在5G网络的加持下,各种新兴技术也将逐渐成为现实,为大……vivo手机暖心了!全力用科技连接听障人群根据最新的调查显示,我国现有的听力障碍群体数量将近3000万,但配套的设施以及专业服务人员,却远远无法满足该群体的基础需求。面对这一现状,在近日,中国听力医学发展基金会携手vi……python数据分析模块numpypandas全解文章目录第3章数组的存储和处理:numpy模块3。1。1创建数组:array()函数3。1。2创建等差数组:arange()函数3。1。3创建随机数组:rand()、randn……00后小姐姐把苹果最经典iPod当发夹视频播放破百万你认识图片中的设备吗?日前,来自视频平台TikTok的一名年轻女孩,在视频中手持iPodShuffle问大家这是什么?最后她把iPodShuffle当作了发夹,夹在了自己的头发……空调之王正式易主日均进账7。7亿,董明珠的格力输在哪了?无论是格力还是美的,赚了还是赔了,与我们没半毛钱关系,我们平民百姓只看重质量与性价比。过着乞丐的生活却操着皇帝的心不是我们平民百姓该有的。安置房多了,格力销量就少了!一到……微信支付宝已开放支持数字人民币生态记者从腾讯方面获悉,目前,微信支付已全面开放对数字人民币试点区域的支持。用户在数字人民币APP中实名开通微众银行(微信支付)数字人民币钱包后,可以使用数字人民币APP或微信进行……京东自营售后开始扯淡了于2021年6月17日自京东商城鱼跃京东商城自营旗舰店购买鱼跃1升制氧机一台,昨天出现湿化瓶加水后安装不到位,在京东商场申请售后,京东商城给出的售后流程是京东收货,结果接到厂家……外媒综述多国向中企5G技术打开大门美构筑封杀包围网企图破产西班牙媒体称,即将到来的5G移动网络是重大的技术飞跃,西班牙已经决定加入其中。不仅是西班牙,包括德国、阿联酋等美国盟友在内的越来越多国家向中国企业的5G技术打开大门,美国构筑对……相关协会提示防范虚拟货币交易炒作风险新华社北京5月18日电(记者吴雨)近期,虚拟货币价格暴涨暴跌,虚拟货币交易炒作活动有所反弹。对此,中国互联网金融协会等18日联合发布公告,提示广大消费者要增强风险意识,不参与虚……
美国CPC认证(亚马逊必备)儿童产品证书ampampamp儿天融信独家中标中国移动网络安全态势感知平台项目助力运营商智能刘士远人工智能产品需从临床实际出发助力优质医疗资源下沉下周见!小米神秘新机现身天生好看德国要求苹果等手机能用7年,这一要求能实现吗?扫黑风暴一夜爆火,腾讯视频VIP中P更是让人恼火过年送爸妈什么礼物好?索爱E52高端收音机安排上2022开年游戏界诞生三大收购案全球游戏厂商三足鼎立之势已成华为申请新专利智能机镜头配备可变性摄像头给老硬盘中的小姐姐换个新房铠侠XD10固态移动硬盘PSSD体新机传MIUI13长这样iPhone14mini被砍了iQO苹果或让你在戴口罩时直接用FaceID解锁iPhone

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利