提高网站排名怎么做,南京培训网站建设,网站建设详细设计,网站开发项目计划Pandas是Python第三方库#xff0c;提供高性能易用数据类型和分析工具
import pandas as pd
Pandas库的Series类型
Series类型由一组数据及与之相关的数据索引组成import pandas as pda pd.Series([9,8,7,6])
print(a)#执行结果
0 9
1 8
2 7
3 6
dtype: int64
#i…Pandas是Python第三方库提供高性能易用数据类型和分析工具import pandas as pdPandas库的Series类型Series类型由一组数据及与之相关的数据索引组成importpandasaspd apd.Series([9,8,7,6])print(a)#执行结果09182736dtype:int64#int64:Numpy中的数据类型 结果中第一列自动索引importpandasaspd apd.Series([9,8,7,6],index[a,b,c,d])#index参数可以自定义索引可以省略print(a)#执行结果a9b8c7d6dtype:int64Series类型创建Series类型可以由如下类型创建Python列表标量值Python字典ndarray其他函数1、从标量值创建importpandasaspd spd.Series(25,index[a,b,c])#index参数不能省略print(s)#执行结果a25b25c25dtype:int642、从字典类型创建importpandasaspd spd.Series({a:9,b:8,c:7})print(s)#执行结果a9b8c7dtype:int64#重新调整创建语句index从字典中进行选择spd.Series({a:9,b:8,c:7},index[c,a,b,d])#执行结果c7.0a9.0b8.0d NaN dtype:float643、从ndarray类型创建importpandasaspdimportnumpyasnp npd.Series(np.arange(5))print(n)#执行结果0011223344dtype:int64#重新调整创建语句npd.Series(np.arange(5),indexnp.arange(9,4,-1))#执行结果9081726354dtype:int64Series类型的基本操作Series类型包括index和values两部分。Series类型的操作类似ndarray类型和Python字典类型。importpandasaspd npd.Series([9,8,7,6],index[a,b,c,d])print(n)print(n.index)print(n.values)print(n[b])print(n[1])print(n[[c,b,a]])print(n[[a,b,0]])#此行代码会报错#执行结果a9b8c7d6dtype:int64 Index([a,b,c,d],dtypeobject)[9876]88c7b8a9dtype:int64#总结# .index 获得索引 .values 获得数据#自动索引和自定义索引并存#两套索引并存但不能混用Series类型的操作类似ndarray类型索引方法相同采用[]NumPy中运算和操作可用于Series类型可以通过自定义索引的列表进行切片可以通过自动索引进行切片如果存在自定义索引则一同被切片importpandasaspdimportnumpyasnp npd.Series([9,8,7,6],index[a,b,c,d])print(n)print(n[:3])print(n[nn.median()])print(np.exp(n))#执行结果a9b8c7d6dtype:int64 a9b8c7dtype:int64 a9b8dtype:int64 a8103.083928b2980.957987c1096.633158d403.428793dtype:float64Series类型的操作类似Python字典类型通过自定义索引访问保留字in操作使用.get()方法importpandasaspd npd.Series([9,8,7,6],index[a,b,c,d])print(n[b])print(cinn)print(0inn)print(n.get(f,100))#执行结果8TrueFalse100Series类型对齐操作SeriesSeriesimportpandasaspd apd.Series([1,2,3],index[c,d,e])bpd.Series([9,8,7,6],[a,b,c,d])print(ab)#执行结果a NaN b NaN c8.0d8.0e NaN dtype:float64Series类型在运算中会自动对齐不同索引的数据Series类型的name属性Series对象和索引都可以有一个名字存储在属性.name中importpandasaspd bpd.Series([9,8,7,6],[a,b,c,d])print(b.name)b.nameSeries对象b.index.name索引列print(b)#执行结果None索引列 a9b8c7d6Name:Series对象,dtype:int64Series类型的修改Series对象可以随时修改并即刻生效importpandasaspd bpd.Series([9,8,7,6],[a,b,c,d])b[a]15b.nameSeriesprint(b)b.nameNew Seriesb[[b,c]]20print(b)#执行结果a15b8c7d6Name:Series,dtype:int64 a15b20c20d6Name:New Series,dtype:int64Series类型Series是一维带“标签”数组index_0–data_aSeries基本操作类似ndarray和字典根据索引对齐Pandas库的DataFrame类型DataFrame类型由共用相同索引的一组列组成DataFrame是一个表格型的数据类型每列值类型可以不同DataFrame既有行索引、也有列索引DataFrame常用于表达二维数据但可以表达多维数据DataFrame类型创建DataFrame类型可以由如下类型创建二维ndarray对象由一维ndarray、列表、字典、元组或Series构成的字典Series类型其他的DataFrame类型1、从二维ndarray对象创建importpandasaspdimportnumpyasnp dpd.DataFrame(np.arange(10).reshape(2,5))print(d)#执行结果01234#这一行是自动列索引001234156789#这 一 列 是 自 动 行 索 引2、从一维ndarray对象字典创建importpandasaspd dt{one:pd.Series([1,2,3],[a,b,c]),two:pd.Series([9,8,7,6],[a,b,c,d])}dpd.DataFrame(dt)print(d)spd.DataFrame(dt,index[b,c,d],columns[two,three])print(s)#执行结果one two a1.09b2.08c3.07d NaN6two three b8NaN c7NaN d6NaN#数据根据行列索引自动补齐3、从列表类型的字典创建importpandasaspd dl{one:[1,2,3,4],two:[9,8,7,6]}dpd.DataFrame(dl,index[a,b,c,d])print(d)#执行结果one two a19b28c37d46创建上述表格的数据importpandasaspd dl{城市:[北京,上海,广州,深圳,沈阳],环比:[101.5,101.2,101.3,102.0,100.1],同比:[120.7,127.3,119.4,140.9,101.4],定基:[121.4,127.8,120.0,145.5,101.6]}dpd.DataFrame(dl,index[c1,c2,c3,c4,c5])print(d)print(d.index)print(d.columns)print(d.values)print(d[同比])#print(d.ix[c2]) ix在新版本的pandas里已备废弃开始用loc、ilocprint(d.loc[c2])print(d[同比][c2])#执行结果城市 环比 同比 定基 c1 北京101.5120.7121.4c2 上海101.2127.3127.8c3 广州101.3119.4120.0c4 深圳102.0140.9145.5c5 沈阳100.1101.4101.6Index([c1,c2,c3,c4,c5],dtypeobject)Index([城市,环比,同比,定基],dtypeobject)[[北京101.5120.7121.4][上海101.2127.3127.8][广州101.3119.4120.0][深圳102.0140.9145.5][沈阳100.1101.4101.6]]c1120.7c2127.3c3119.4c4140.9c5101.4Name:同比,dtype:float64 城市 上海 环比101.2同比127.3定基127.8Name:c2,dtype:object127.3DataFrame是二维带“标签”数组DataFrame基本操作类似Series依据行列索引数据类型操作如何改变Series和DataFrame对象增加或重排重新索引、删除drop重新索引.reindex()能够改变或重排Series和DataFrame索引importpandasaspd dl{城市:[北京,上海,广州,深圳,沈阳],环比:[101.5,101.2,101.3,102.0,100.1],同比:[120.7,127.3,119.4,140.9,101.4],定基:[121.4,127.8,120.0,145.5,101.6]}dpd.DataFrame(dl,index[c1,c2,c3,c4,c5])print(d)dd.reindex(index[c5,c4,c3,c2,c1])print(d)dd.reindex(columns[城市,同比,环比,定基])print(d)#执行结果城市 环比 同比 定基 c1 北京101.5120.7121.4c2 上海101.2127.3127.8c3 广州101.3119.4120.0c4 深圳102.0140.9145.5c5 沈阳100.1101.4101.6城市 环比 同比 定基 c5 沈阳100.1101.4101.6c4 深圳102.0140.9145.5c3 广州101.3119.4120.0c2 上海101.2127.3127.8c1 北京101.5120.7121.4城市 同比 环比 定基 c5 沈阳101.4100.1101.6c4 深圳140.9102.0145.5c3 广州119.4101.3120.0c2 上海127.3101.2127.8c1 北京120.7101.5121.4.reindex(indexNone, columnsNone, …)的参数参数说明indexcolumns新的行列自定义索引fill_value重新索引中用于填充缺失位置的值method填充方法, ffill当前值向前填充bfill向后填充limit最大填充量copy默认True生成新的对象False时新旧相等不复制importpandasaspd dl{城市:[北京,上海,广州,深圳,沈阳],环比:[101.5,101.2,101.3,102.0,100.1],同比:[120.7,127.3,119.4,140.9,101.4],定基:[121.4,127.8,120.0,145.5,101.6]}dpd.DataFrame(dl,index[c1,c2,c3,c4,c5])dd.reindex(index[c5,c4,c3,c2,c1])print(d)dd.reindex(columns[城市,同比,环比,定基])print(d)newcd.columns.insert(4,新增)newdd.reindex(columnsnewc,fill_value200)print(newd)print(d.index)print(d.columns)#执行结果城市 环比 同比 定基 c5 沈阳100.1101.4101.6c4 深圳102.0140.9145.5c3 广州101.3119.4120.0c2 上海101.2127.3127.8c1 北京101.5120.7121.4城市 同比 环比 定基 c5 沈阳101.4100.1101.6c4 深圳140.9102.0145.5c3 广州119.4101.3120.0c2 上海127.3101.2127.8c1 北京120.7101.5121.4城市 同比 环比 定基 新增 c5 沈阳101.4100.1101.6200c4 深圳140.9102.0145.5200c3 广州119.4101.3120.0200c2 上海127.3101.2127.8200c1 北京120.7101.5121.4200Index([c5,c4,c3,c2,c1],dtypeobject)Index([城市,同比,环比,定基],dtypeobject)#Series和DataFrame的索引是Index类型Index对象是不可修改类型索引类型的常用方法方法说明.append(idx)连接另一个Index对象产生新的Index对象.diff(idx)计算差集产生新的Index对象.intersection(idx)计算交集.union(idx)计算并集.delete(loc)删除loc位置处的元素.insert(loc,e)在loc位置增加一个元素eimportpandasaspd dl{城市:[北京,上海,广州,深圳,沈阳],环比:[101.5,101.2,101.3,102.0,100.1],同比:[120.7,127.3,119.4,140.9,101.4],定基:[121.4,127.8,120.0,145.5,101.6]}dpd.DataFrame(dl,index[c1,c2,c3,c4,c5])ncd.columns.delete(2)nid.index.insert(5,c0)ndd.reindex(indexni,columnsnc).ffill()print(nd)#执行结果城市 环比 定基 c1 北京101.5121.4c2 上海101.2127.8c3 广州101.3120.0c4 深圳102.0145.5c5 沈阳100.1101.6c0 沈阳100.1101.6删除指定索引对象importpandasaspd dl{城市:[北京,上海,广州,深圳,沈阳],环比:[101.5,101.2,101.3,102.0,100.1],同比:[120.7,127.3,119.4,140.9,101.4],定基:[121.4,127.8,120.0,145.5,101.6]}dpd.DataFrame(dl,index[c1,c2,c3,c4,c5])print(d)ad.drop(c5)print(a)bd.drop(同比,axis1)print(b)#执行结果城市 环比 同比 定基 c1 北京101.5120.7121.4c2 上海101.2127.3127.8c3 广州101.3119.4120.0c4 深圳102.0140.9145.5c5 沈阳100.1101.4101.6城市 环比 同比 定基 c1 北京101.5120.7121.4c2 上海101.2127.3127.8c3 广州101.3119.4120.0c4 深圳102.0140.9145.5城市 环比 定基 c1 北京101.5121.4c2 上海101.2127.8c3 广州101.3120.0c4 深圳102.0145.5c5 沈阳100.1101.6Pandas库的数据类型运算算术运算法则算术运算根据行列索引补齐后运算运算默认产生浮点数补齐时缺项填充NaN (空值)二维和一维、一维和零维间为广播运算采用 ‐ * /符号进行的二元运算产生新的对象importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(12).reshape(3,4))print(a)bpd.DataFrame(np.arange(20).reshape(4,5))print(b)print(ab)print(a*b)#执行结果0123001231456728910110123400123415678921011121314315161718190123400.02.04.06.0NaN19.011.013.015.0NaN218.020.022.024.0NaN3NaN NaN NaN NaN NaN0123400.01.04.09.0NaN120.030.042.056.0NaN280.099.0120.0143.0NaN3NaN NaN NaN NaN NaN方法形式的运算方法说明.add(d, **argws)类型间加法运算可选参数.sub(d, **argws)类型间减法运算可选参数.mul(d, **argws)类型间乘法运算可选参数.div(d, **argws)类型间除法运算可选参数importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(12).reshape(3,4))print(a)bpd.DataFrame(np.arange(20).reshape(4,5))print(b)print(b.add(a,fill_value100))print(b.mul(a,fill_value0))#fill_value参数替代NaN替代后参与运算cpd.DataFrame(np.arange(20).reshape(4,5))print(c)dpd.Series(np.arange(4))print(c-10)print(c-d)#不同维度间为广播运算一维Series默认在轴1参与运算print(c.sub(d,axis0))#使用运算方法可以令一维Series参与轴0运算#执行结果0123001231456728910110123400123415678921011121314315161718190123400.02.04.06.0104.019.011.013.015.0109.0218.020.022.024.0114.03115.0116.0117.0118.0119.00123400.01.04.09.00.0120.030.042.056.00.0280.099.0120.0143.00.030.00.00.00.00.0012340012341567892101112131431516171819012340-10-9-8-7-61-5-4-3-2-12012343567890123400.00.00.00.0NaN15.05.05.05.0NaN210.010.010.010.0NaN315.015.015.015.0NaN0123400123414567828910111231213141516比较运算法则比较运算只能比较相同索引的元素不进行补齐二维和一维、一维和零维间为广播运算采用 !等符号进行的二元运算产生布尔对象importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(12).reshape(3,4))print(a)bpd.DataFrame(np.arange(12,0,-1).reshape(3,4))print(b)print(ab)print(ab)#同维度运算尺寸一致cpd.DataFrame(np.arange(12).reshape(3,4))print(c)dpd.Series(np.arange(4))print(d)print(cd)print(d0)#不同维度广播运算默认在1轴#执行结果012300123145672891011012301211109187652432101230FalseFalseFalseFalse1FalseFalseFalseTrue2TrueTrueTrueTrue01230FalseFalseFalseFalse1FalseFalseTrueFalse2FalseFalseFalseFalse01230012314567289101100112233dtype:int6401230FalseFalseFalseFalse1TrueTrueTrueTrue2TrueTrueTrueTrue0False1True2True3Truedtype:boolPandas数据特征分析数据排序.sort_index()方法在指定轴上根据索引进行排序默认升序.sort_index(axis0, ascendingTrue)importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(a)print(a.sort_index())ba.sort_index(axis1,ascendingFalse)print(b)print(b.sort_index())#执行结果01234c01234a56789d1011121314b151617181901234a56789b1516171819c01234d101112131443210c43210a98765d1413121110b191817161543210a98765b1918171615c43210d1413121110.sort_values()方法在指定轴上根据数值进行排序默认升序Series.sort_values(axis0, ascendingTrue)DataFrame.sort_values(by, axis0, ascendingTrue)by : axis轴上的某个索引或索引列表importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(a)ba.sort_values(2,ascendingFalse)print(b)ba.sort_values(a,axis1,ascendingFalse)print(b)#执行结果01234c01234a56789d1011121314b151617181901234b1516171819d1011121314a56789c0123443210c43210a98765d1413121110b1918171615importpandasaspdimportnumpyasnp apd.DataFrame(np.arange(12).reshape(3,4),index[a,b,c])print(a)bpd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(b)cabprint(c.sort_values(2,ascendingFalse))print(c.sort_values(2,ascendingTrue))#执行结果0123a0123b4567c89101101234c01234a56789d1011121314b151617181901234b19.021.023.025.0NaN c8.010.012.014.0NaN a5.07.09.011.0NaN d NaN NaN NaN NaN NaN01234a5.07.09.011.0NaN c8.010.012.014.0NaN b19.021.023.025.0NaN d NaN NaN NaN NaN NaN#NaN统一放到排序末尾基本的统计分析函数使用与Series和DataFrame类型方法说明.sum()计算数据的总和按0轴计算下同.count()非NaN值的数量.mean() .median()计算数据的算术平均值、算术中位数.var() .std()计算数据的方差、标准差.min() .max()计算数据的最小值、最大值.argmin() .argmax()计算数据最大值、最小值所在位置的索引位置自动索引.idxmin() .idxmax()计算数据最大值、最小值所在位置的索引自定义索引).describe()针对0轴各列的统计汇总importpandasaspdimportnumpyasnp apd.Series([9,8,7,6],index[a,b,c,d])print(a)print(a.describe())print(type(a.describe()))print(a.describe()[count])print(a.describe()[max])bpd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(b)print(b.describe())print(type(b.describe()))print(b.describe().loc[count])print(b.describe()[2])#执行结果a9b8c7d6dtype:int64 count4.000000mean7.500000std1.290994min6.00000025%6.75000050%7.50000075%8.250000max9.000000dtype:float64classpandas.core.series.Series4.09.001234c01234a56789d1011121314b151617181901234count4.0000004.0000004.0000004.0000004.000000mean7.5000008.5000009.50000010.50000011.500000std6.4549726.4549726.4549726.4549726.454972min0.0000001.0000002.0000003.0000004.00000025%3.7500004.7500005.7500006.7500007.75000050%7.5000008.5000009.50000010.50000011.50000075%11.25000012.25000013.25000014.25000015.250000max15.00000016.00000017.00000018.00000019.000000classpandas.core.frame.DataFrame04.014.024.034.044.0Name:count,dtype:float64 count4.000000mean9.500000std6.454972min2.00000025%5.75000050%9.50000075%13.250000max17.000000Name:2,dtype:float64累计统计分析函数适用于Series和DataFrame类型累计计算方法说明.cumsum()依次给出前1、2、…、n个数的和.cumprod()依次给出前1、2、…、n个数的积.cummax()依次给出前1、2、…、n个数的最大值.cummin()依次给出前1、2、…、n个数的最小值importpandasaspdimportnumpyasnp bpd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(b)print(b.cumsum())print(b.cumprod())print(b.cummin())print(b.cummax())#执行结果01234c01234a56789d1011121314b151617181901234c01234a5791113d1518212427b303438424601234c01234a06142436d066168312504b0105628565616957601234c01234a01234d01234b0123401234c01234a56789d1011121314b1516171819方法说明.rolling(w).sum()依次计算相邻w个元素的和.rolling(w).mean()依次计算相邻w个元素的算术平均值.rolling(w).var()依次计算相邻w个元素的方差.rolling(w).std()依次计算相邻w个元素的标准差.rolling(w).min .max()依次计算相邻w个元素的最小值和最大值importpandasaspdimportnumpyasnp bpd.DataFrame(np.arange(20).reshape(4,5),index[c,a,d,b])print(b)print(b.rolling(2).sum())print(b.rolling(3).sum())#执行结果01234c01234a56789d1011121314b151617181901234c NaN NaN NaN NaN NaN a5.07.09.011.013.0d15.017.019.021.023.0b25.027.029.031.033.001234c NaN NaN NaN NaN NaN a NaN NaN NaN NaN NaN d15.018.021.024.027.0b30.033.036.039.042.0数据的相关性分析相关分析两个事物表示为X 和 Y如何判断它们之间的存在相关性X增大Y增大两个变量正相关X增大Y减小两个变量负相关X增大Y无视两个变量不相关协方差两个事物表示为X 和 Y如何判断它们之间的存在相关性Cov(x,y)∑i1n(xi−xˉ)∗(yi−yˉ)n−1Cov(x,y)\frac{\sum_{i1}^{n}({x_i-\bar{x})}*({y_i-\bar{y})}}{n-1}Cov(x,y)n−1∑i1n(xi−xˉ)∗(yi−yˉ)协方差0, X 和 Y正相关协方差0, X 和 Y负相关协方差0, X 和 Y独立无关方法说明.cov()计算协方差矩阵.corr()计算相关系数矩阵, Pearson、Spearman、Kendall等系数