找回密码
 会员注册
查看: 20|回复: 0

Python酷库之旅-第三方库Pandas(090)

[复制链接]

1

主题

0

回帖

4

积分

新手上路

积分
4
发表于 2024-9-10 03:35:17 | 显示全部楼层 |阅读模式
目录一、用法精讲381、pandas.Series.plot方法381-1、语法381-2、参数381-3、功能381-4、返回值381-5、说明381-6、用法381-6-1、数据准备381-6-2、代码示例381-6-3、结果输出382、 pandas.Series.plot.area方法382-1、语法382-2、参数382-3、功能382-4、返回值382-5、说明382-6、用法382-6-1、数据准备382-6-2、代码示例382-6-3、结果输出383、pandas.Series.plot.bar方法383-1、语法383-2、参数383-3、功能383-4、返回值383-5、说明383-6、用法383-6-1、数据准备383-6-2、代码示例383-6-3、结果输出384、pandas.Series.plot.barh方法384-1、语法384-2、参数384-3、功能384-4、返回值384-5、说明384-6、用法384-6-1、数据准备384-6-2、代码示例384-6-3、结果输出385、pandas.Series.plot.box方法385-1、语法385-2、参数385-3、功能385-4、返回值385-5、说明385-6、用法385-6-1、数据准备385-6-2、代码示例385-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲381、pandas.Series.plot方法381-1、语法#381、pandas.Series.plot方法pandas.Series.plot(*args,**kwargs)MakeplotsofSeriesorDataFrame.Usesthebackendspecifiedbytheoptionplotting.backend.Bydefault,matplotlibisused.Parameters:dataSeriesorDataFrameTheobjectforwhichthemethodiscalled.xlabelorposition,defaultNoneOnlyusedifdataisaDataFrame.ylabel,positionorlistoflabel,positions,defaultNoneAllowsplottingofonecolumnversusanother.OnlyusedifdataisaDataFrame.kindstrThekindofplottoproduce:‘line’:lineplot(default)‘bar’:verticalbarplot‘barh’:horizontalbarplot‘hist’:histogram‘box’:boxplot‘kde’:KernelDensityEstimationplot‘density’:sameas‘kde’‘area’:areaplot‘pie’:pieplot‘scatter’:scatterplot(DataFrameonly)‘hexbin’:hexbinplot(DataFrameonly)axmatplotlibaxesobject,defaultNoneAnaxesofthecurrentfigure.subplotsboolorsequenceofiterables,defaultFalseWhethertogroupcolumnsintosubplots:False:NosubplotswillbeusedTrue:Makeseparatesubplotsforeachcolumn.sequenceofiterablesofcolumnlabels:Createasubplotforeachgroupofcolumns.Forexample[(‘a’,‘c’),(‘b’,‘d’)]willcreate2subplotsnewithcolumns‘a’and‘c’,andonewithcolumns‘b’and‘d’.Remainingcolumnsthataren’tspecifiedwillbeplottedinadditionalsubplots(onepercolumn).Newinversion1.5.0.sharexbool,defaultTrueifaxisNoneelseFalseIncasesubplots=True,sharexaxisandsetsomexaxislabelstoinvisible;defaultstoTrueifaxisNoneotherwiseFalseifanaxispassedin;Beaware,thatpassinginbothanaxandsharex=Truewillalterallxaxislabelsforallaxisinafigure.shareybool,defaultFalseIncasesubplots=True,shareyaxisandsetsomeyaxislabelstoinvisible.layouttuple,optional(rows,columns)forthelayoutofsubplots.figsizeatuple(width,height)ininchesSizeofafigureobject.use_indexbool,defaultTrueUseindexasticksforxaxis.titlestrorlistTitletousefortheplot.Ifastringispassed,printthestringatthetopofthefigure.IfalistispassedandsubplotsisTrue,printeachiteminthelistabovethecorrespondingsubplot.gridbool,defaultNone(matlabstyledefault)Axisgridlines.legendboolor{‘reverse’}Placelegendonaxissubplots.stylelistordictThematplotliblinestylepercolumn.logxboolor‘sym’,defaultFalseUselogscalingorsymlogscalingonxaxis.logyboolor‘sym’defaultFalseUselogscalingorsymlogscalingonyaxis.loglogboolor‘sym’,defaultFalseUselogscalingorsymlogscalingonbothxandyaxes.xtickssequenceValuestouseforthexticks.ytickssequenceValuestousefortheyticks.xlim2-tuple/listSetthexlimitsofthecurrentaxes.ylim2-tuple/listSettheylimitsofthecurrentaxes.xlabellabel,optionalNametouseforthexlabelonx-axis.Defaultusesindexnameasxlabel,orthex-columnnameforplanarplots.Changedinversion2.0.0:Nowapplicabletohistograms.ylabellabel,optionalNametousefortheylabelony-axis.Defaultwillshownoylabel,orthey-columnnameforplanarplots.Changedinversion2.0.0:Nowapplicabletohistograms.rotfloat,defaultNoneRotationforticks(xticksforvertical,yticksforhorizontalplots).fontsizefloat,defaultNoneFontsizeforxticksandyticks.colormapstrormatplotlibcolormapobject,defaultNoneColormaptoselectcolorsfrom.Ifstring,loadcolormapwiththatnamefrommatplotlib.colorbarbool,optionalIfTrue,plotcolorbar(onlyrelevantfor‘scatter’and‘hexbin’plots).positionfloatSpecifyrelativealignmentsforbarplotlayout.From0(left/bottom-end)to1(right/top-end).Defaultis0.5(center).tablebool,SeriesorDataFrame,defaultFalseIfTrue,drawatableusingthedataintheDataFrameandthedatawillbetransposedtomeetmatplotlib’sdefaultlayout.IfaSeriesorDataFrameispassed,usepasseddatatodrawatable.yerrDataFrame,Series,array-like,dictandstrSeePlottingwithErrorBarsfordetail.xerrDataFrame,Series,array-like,dictandstrEquivalenttoyerr.stackedbool,defaultFalseinlineandbarplots,andTrueinareaplotIfTrue,createstackedplot.secondary_yboolorsequence,defaultFalseWhethertoplotonthesecondaryy-axisifalist/tuple,whichcolumnstoplotonsecondaryy-axis.mark_rightbool,defaultTrueWhenusingasecondary_yaxis,automaticallymarkthecolumnlabelswith“(right)”inthelegend.include_boolbool,defaultisFalseIfTrue,booleanvaluescanbeplotted.backendstr,defaultNoneBackendtouseinsteadofthebackendspecifiedintheoptionplotting.backend.Forinstance,‘matplotlib’.Alternatively,tospecifytheplotting.backendforthewholesession,setpd.options.plotting.backend.**kwargsOptionstopasstomatplotlibplottingmethod.Returns:matplotlib.axes.Axesornumpy.ndarrayofthemIfthebackendisnotthedefaultmatplotlibone,thereturnvaluewillbetheobjectreturnedbythebackend.NotesSeematplotlibdocumentationonlineformoreonthissubjectIfkind=‘bar’or‘barh’,youcanspecifyrelativealignmentsforbarplotlayoutbypositionkeyword.From0(left/bottom-end)to1(right/top-end).Defaultis0.5(center)381-2、参数381-2-1、kind(可选,默认值为'line'):字符串,指定图表的类型,可选值有:'line'、'bar'、'barh'、'hist'、'box'、'kde'、'density'、'area'、'pie'等。381-2-2、ax(可选,默认值为None):matplotlib.axes.Axes,用于绘制图形的Axes对象,如果未提供,则会自动创建一个新的图形。381-2-3、subplots(可选,默认值为False):布尔值,是否为每个变量创建一个子图,如果是True,则每个要绘制的变量将会在一个新的子图中展现。381-2-4、sharex(可选,默认值为False):布尔值,如果subplots=True,是否共享x轴。381-2-5、sharey(可选,默认值为False):布尔值,如果subplots=True,是否共享y轴。381-2-6、layout(可选):元组,用于指定子图的排布方式,例如(rows,cols)。381-2-7、figsize(可选):元组,确定图形的大小,单位为英寸。例如(10,5)表示宽10英寸,高5英寸。381-2-8、title(可选):字符串,图形的。381-2-9、grid(可选,默认值为False):布尔值,是否显示网格线。381-2-10、legend(可选,默认值为False):布尔值,是否显示图例。381-2-11、color(可选):字符串或列表,指定图形的颜色,可以是单个颜色或颜色列表。381-2-12、fontsize(可选):整数,指定字体大小。381-2-13、xlabel(可选):字符串,x轴的标签。381-2-14、ylabel(可选):字符串,y轴的标签。381-2-15、xlim(可选):元组,设置x轴的范围。381-2-16、ylim(可选):元组,设置y轴的范围。381-2-17、otherkwargs(可选):其他可选参数会被传递给Matplotlib的绘图函数。381-3、功能        通过该方法,用户可以快速、简便地可视化时间序列数据、分布以及不同类型的统计信息等,相比于直接使用Matplotlib进行绘图,使用pandas的绘图接口可以更高效地处理Series数据。381-4、返回值        返回一个matplotlib.axes.Axes对象,表示绘图区域,用户可以利用该对象进一步定制图形,例如添加注释、修改图例等。381-5、说明    使用场景:381-5-1、时间序列分析:当需要分析时间序列数据时,可以使用plot方法绘制时间序列图,帮助识别趋势、周期和异常值。381-5-2、数据分布检视:利用直方图(hist)和密度图(kde)对数据进行分布分析,了解数据的集中趋势和离散程度。381-5-3、比较不同变量:当需要比较多个变量的值时,可以通过绘制条形图(bar)或水平条形图(barh)来直观展示不同变量之间的关系。381-5-4、统计分析:使用箱线图(box)进行统计描述,帮助识别数据的四分位数、极值和异常值。381-5-5、探索性数据分析(EDA):在进行数据清洗和初步分析时,通过可视化手段快速理解数据的特征和分布,为后续的数据处理和建模提供依据。381-5-6、报告和展示:在制作数据报告或展示时,通过图表能够以更加直观的方式呈现数据结果,帮助听众理解复杂信息。381-5-7、分析不同组的特征:针对不同分组的数据,通过绘图可以清晰地展示各组之间的差异,例如,通过分组绘制多个条形图进行比较。381-5-8、自定义可视化:对于需要特定样式或自定义效果的用户,该方法允许传入丰富的参数,使用户可以调整颜色、标签、网格等,提升图表的美观性和可读性。381-6、用法381-6-1、数据准备无381-6-2、代码示例#381、pandas.Series.plot方法#381-1、时间序列分析importpandasaspdimportmatplotlib.pyplotasplt#创建时间序列数据date_range=pd.date_range(start='2024-01-01',periods=100)data=pd.Series(range(100),index=date_range)#绘制时间序列图data.plot(title='TimeSeriesData',xlabel='Date',ylabel='Value')plt.show()#381-2、数据分布检视importpandasaspdimportnumpyasnp#生成随机数据data=pd.Series(np.random.randn(1000))#绘制直方图data.plot(kind='hist',bins=30,title='Histogram',xlabel='Value',ylabel='Frequency',color='purple')plt.show()#绘制密度图data.plot(kind='kde',title='DensityPlot',xlabel='Value',ylabel='Density',color='purple')plt.show()#381-3、比较不同变量importpandasaspd#创建两个变量的数据data1=pd.Series([3,7,5,11],index=['A','B','C','D'])data2=pd.Series([2,5,8,12],index=['A','B','C','D'])#合并数据combined_data=pd.DataFrame({'Data1':data1,'Data2':data2})#绘制条形图combined_data.plot(kind='bar',title='ComparisonofTwoDatasets',ylabel='Values')plt.xticks(rotation=0)plt.show()#381-4、统计分析importpandasaspd#随机生成数据data=pd.Series(np.random.randn(100))#绘制箱线图data.plot(kind='box',title='BoxPlot',ylabel='Value')plt.show()#381-5、探索性数据分析(EDA)importpandasaspd#生成一组示例数据data=pd.Series([4,2,3,4,3,7,4,5,6,7,8,9,8])#绘制直方图data.plot(kind='hist',bins=10,title='ExploratoryDataAnalysis',xlabel='Value',ylabel='Frequency',color='green')plt.show()#381-6、自定义可视化importpandasaspd#生成数据data=pd.Series([10,20,15,25],index=['Q1','Q2','Q3','Q4'])#绘制条形图并自定义样式data.plot(kind='barh',color='purple',title='CustomBarPlot',ylabel='Sales',edgecolor='black')plt.xticks(rotation=0)plt.grid(axis='y')plt.show()#381-7、分析不同组的特征importpandasaspd#创建分类数据group_labels=['A','A','B','B','C','C']data=pd.Series([1,2,3,4,5,6],index=group_labels)#按组绘制条形图data.groupby(data.index).sum().plot(kind='bar',title='GroupComparison',ylabel='Sum',color='green')plt.xticks(rotation=0)plt.show()381-6-3、结果输出#381、pandas.Series.plot方法#381-1、时间序列分析#见图1#381-2、数据分布检视#见图2#381-3、比较不同变量#见图3#381-4、统计分析#见图4#381-5、探索性数据分析(EDA)#见图5#381-6、自定义可视化#见图6#381-7、分析不同组的特征#见图7图1:图2:图3:图4:图5: 图6:图7:382、 pandas.Series.plot.area方法382-1、语法#382、 pandas.Series.plot.area方法pandas.Series.plot.area(x=None,y=None,stacked=True,**kwargs)Drawastackedareaplot.Anareaplotdisplaysquantitativedatavisually.Thisfunctionwrapsthematplotlibareafunction.Parameters:xlabelorposition,optionalCoordinatesfortheXaxis.Bydefaultusestheindex.ylabelorposition,optionalColumntoplot.Bydefaultusesallcolumns.stackedbool,defaultTrueAreaplotsarestackedbydefault.SettoFalsetocreateaunstackedplot.**kwargsAdditionalkeywordargumentsaredocumentedinDataFrame.plot().Returns:matplotlib.axes.Axesornumpy.ndarrayAreaplot,orarrayofareaplotsifsubplotsisTrue.382-2、参数382-2-1、x(可选,默认值为None):字符串或None,指定用作横坐标的列名,如果没有提供,默认使用Series的索引。382-2-2、y(可选,默认值为None):字符串或None,指定用作纵坐标的列名,对于Series类型,通常不需要指定,因为它会默认为Series的值。382-2-3、stacked(可选,默认值为True):布尔值,如果为True,则绘制堆叠面积图;如果为False,则绘制分开的面积图,这对于观察组成部分相对总量的变化非常有用。382-2-4、**kwargs(可选):其他可选参数,如图形的样式、颜色、标签等,具体可以与matplotlib的绘图函数兼容。382-3、功能        用于绘制面积图,使得可视化的数据更为直观,能够直观地展示数据随时间或其他变量的变化,并且可以根据stacked参数设置是否堆叠显示,适合于呈现组成部分对总量变化的贡献或比较不同组别之间的面积。382-4、返回值        返回一个matplotlib.axes.Axes对象,允许对生成的图形进行进一步的自定义和调整。382-5、说明    使用场景:382-5-1、时间序列数据分析:对于随时间变化的数据(如销售额、气温等),面积图可以有效地展示每个时间点的总值以及各个组成部分的变化,帮助分析趋势和季节性影响。382-5-2、组成部分展示:面积图可以用来展示不同类别或组成部分在总量中的占比,例如,显示不同产品在总销售额中的贡献,便于识别主要产品及其变化趋势。382-5-3、堆叠信息对比:当需要比较多个类别的数据时,堆叠面积图可以同时显示各类别的变化,并提供直观的总量理解,帮助识别出哪一部分对整体变化影响最大。382-5-4、市场份额分析:在市场研究中,可以使用面积图来显示不同公司或品牌的市场份额随时间变化的趋势,清楚地反映竞争态势。382-5-5、展示不同变量的关系:在数据科学和统计分析中,可以利用面积图来展示多个变量之间的关系,比如资源消耗、产出等的相对变化,帮助快速识别潜在的关联性。382-5-6、教育与展示:在教学中,利用面积图能够帮助学生更好地理解和掌握数据的变化关系及统计分析结果,是一种有效的可视化工具。382-6、用法382-6-1、数据准备无382-6-2、代码示例#382、pandas.Series.plot.area方法#382-1、时间序列数据分析importpandasaspdimportmatplotlib.pyplotasplt#创建时间序列数据date_range=pd.date_range(start='2023-01-01',periods=12,freq='ME')data=pd.Series([100,120,150,170,160,180,200,220,240,250,280,300],index=date_range)#绘制面积图data.plot.area(title='MonthlySalesOveraYear',figsize=(10,6),alpha=0.5,color='green')plt.ylabel('Sales')plt.xlabel('Date')plt.grid(False)plt.show()#382-2、组成部分展示importpandasaspdimportmatplotlib.pyplotasplt#创建各产品的月销售数据data={'ProductA':[40,50,60,70,80,90],'ProductB':[30,40,50,55,60,80],'ProductC':[20,30,40,60,80,100]}index=pd.date_range(start='2023-01-01',periods=6,freq='ME')df=pd.DataFrame(data,index=index)#绘制堆叠面积图df.plot.area(title='ProductSalesContribution',figsize=(10,6),alpha=0.6)plt.ylabel('Sales')plt.xlabel('Month')plt.grid(True)plt.show()#382-3、堆叠信息对比importpandasaspdimportmatplotlib.pyplotasplt#创建多个分类的数据data={'Category1':[3,5,2,4],'Category2':[2,2,5,3],'Category3':[4,3,4,1]}index=['Q1','Q2','Q3','Q4']df=pd.DataFrame(data,index=index)#绘制堆叠面积图df.plot.area(title='QuarterlyCategoryComparison',figsize=(10,6),alpha=0.7)plt.ylabel('Values')plt.xlabel('Quarter')plt.grid(True)plt.show()#382-4、市场份额分析importpandasaspdimportmatplotlib.pyplotasplt#创建品牌的市场份额数据data={'BrandA':[30,35,40,50],'BrandB':[25,20,15,10],'BrandC':[20,25,30,35]}index=['2020','2021','2022','2023']df=pd.DataFrame(data,index=index)#绘制面积图df.plot.area(title='MarketShareAnalysis',figsize=(10,6),alpha=0.5)plt.ylabel('MarketShare(%)')plt.xlabel('Year')plt.grid(True)plt.show()#382-5、展示不同变量的关系importpandasaspdimportmatplotlib.pyplotasplt#创建资源消耗的数据data={'ResourceA':[200,220,240,260],'ResourceB':[150,180,210,240],'ResourceC':[100,130,150,180]}index=['2020','2021','2022','2023']df=pd.DataFrame(data,index=index)#绘制面积图df.plot.area(title='ResourceConsumptionComparison',figsize=(10,6),alpha=0.6)plt.ylabel('Consumption')plt.xlabel('Year')plt.grid(True)plt.show()#382-6、教育与展示importpandasaspdimportmatplotlib.pyplotasplt#学生成绩数据data={'Math':[85,90,78,92,88],'Science':[79,88,82,85,90],'English':[90,85,88,92,95]}index=['Student1','Student2','Student3','Student4','Student5']df=pd.DataFrame(data,index=index)#绘制堆叠面积图df.plot.area(title='StudentGradesinSubjects',figsize=(10,6),alpha=0.7)plt.ylabel('Grades')plt.xlabel('Students')plt.grid(True)plt.show()382-6-3、结果输出#382、pandas.Series.plot.area方法#382-1、时间序列数据分析#见图8#382-2、组成部分展示#见图9#382-3、堆叠信息对比#见图10#382-4、市场份额分析#见图11#382-5、展示不同变量的关系#见图12#382-6、教育与展示#见图13图8:图9:图10:图11:图12:图13:383、pandas.Series.plot.bar方法383-1、语法#383、pandas.Series.plot.bar方法pandas.Series.plot.bar(x=None,y=None,**kwargs)Verticalbarplot.Abarplotisaplotthatpresentscategoricaldatawithrectangularbarswithlengthsproportionaltothevaluesthattheyrepresent.Abarplotshowscomparisonsamongdiscretecategories.Oneaxisoftheplotshowsthespecificcategoriesbeingcompared,andtheotheraxisrepresentsameasuredvalue.Parameters:xlabelorposition,optionalAllowsplottingofonecolumnversusanother.Ifnotspecified,theindexoftheDataFrameisused.ylabelorposition,optionalAllowsplottingofonecolumnversusanother.Ifnotspecified,allnumericalcolumnsareused.colorstr,array-like,ordict,optionalThecolorforeachoftheDataFrame’scolumns.Possiblevaluesare:Asinglecolorstringreferredtobyname,RGBorRGBAcode,forinstance‘red’or‘#a98d19’.Asequenceofcolorstringsreferredtobyname,RGBorRGBAcode,whichwillbeusedforeachcolumnrecursively.Forinstance[‘green’,’yellow’]eachcolumn’sbarwillbefilledingreenoryellow,alternatively.Ifthereisonlyasinglecolumntobeplotted,thenonlythefirstcolorfromthecolorlistwillbeused.Adictoftheform{columnnamecolor},sothateachcolumnwillbecoloredaccordingly.Forexample,ifyourcolumnsarecalledaandb,thenpassing{‘a’:‘green’,‘b’:‘red’}willcolorbarsforcolumnaingreenandbarsforcolumnbinred.**kwargsAdditionalkeywordargumentsaredocumentedinDataFrame.plot().Returns:matplotlib.axes.Axesornp.ndarrayofthemAnndarrayisreturnedwithonematplotlib.axes.Axespercolumnwhensubplots=True.383-2、参数383-2-1、x(可选,默认值为None):字符串或None,指定条形图的x轴数据,如果未提供,默认使用Series的索引作为x轴。383-2-2、y(可选,默认值为None):字符串或None,指定y轴数据,如果你在Series中提供了数据,那么y通常也是自动使用该Series的值。383-2-3、**kwargs(可选):其他参数,传递给matplotlib的bar方法,例如:color:设置条形的颜色;alpha:设置透明度;width:设置条形的宽度;edgecolor:设置条形的边缘颜色;title:图表的;fontsize:轴标签和的字体大小等。383-3、功能        主要用于可视化一维数据,以清晰地显示不同值之间的比较,适合用于类别数据的统计分析,例如分组数据、特征比较等,可以通过x和y参数控制数据的来源,支持更复杂的可视化需求。383-4、返回值        返回一个matplotlib.axes.Axes对象,该对象可以用于进一步的定制和调整,返回的对象是matplotlib的轴对象,可以通过这个对象添加、设置标签和其他绘图属性。383-5、说明    使用场景:383-5-1、类别数据比较:当需要比较不同类别的数量或其他数值时,条形图可以清晰地展示各类别之间的差异。例如,显示销售数据中各产品类别的销量。383-5-2、频率分布:可以用于可视化数据的频率分布,比如展示每个分组(例如年龄段、收入水平等)的样本数量。这种情况下,条形图可以帮助快速识别数据的分布特征。383-5-3、展示统计结果:在执行统计分析后,可以使用条形图展示统计结果,比如t测试或ANOVA分析的结果,帮助理解不同组之间的显著性差异。383-5-4、变化趋势对比:在有多个时间点的数据时,可以通过条形图并排展示不同时间点、不同条件下的结果,从而比较趋势,这在营销分析、销售报告等场合很常见。383-5-5、数据报告与演示:条形图因为直观易懂,适用于数据报告和演示,用条形图可以帮助观众更好地理解数据,尤其是在非数据专业背景的受众面前。383-5-6、探索性数据分析:在数据分析的初始阶段,利用条形图快速识别数据中的模式、趋势和异常值,帮助分析师调整下一步的分析策略。383-5-7、多个分类比较:可以通过堆叠条形图或并列条形图比较不同组之间的多个变量,比如比较不同地区、不同产品在同一时间段的销售表现。383-6、用法383-6-1、数据准备无383-6-2、代码示例#383、pandas.Series.plot.bar方法#383-1、类别数据比较importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'产品类别':['A','B','C','D'],'销量':[150,200,300,250]}df=pd.DataFrame(data)#绘制条形图df.set_index('产品类别')['销量'].plot.bar(color='purple')plt.title('各产品类别销量比较')plt.xlabel('产品类别')plt.xticks(rotation=0)plt.ylabel('销量')plt.show()#383-2、频率分布importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'年龄':[22,24,22,23,25,24,23,30,31,30,30]}df=pd.DataFrame(data)#计算频率age_counts=df['年龄'].value_counts()#绘制条形图age_counts.plot.bar(color='green')plt.title('年龄分布')plt.xlabel('年龄')plt.xticks(rotation=0)plt.ylabel('人数')plt.show()#383-3、展示统计结果importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'组别':['组1','组2','组3'],'均值':[20,35,30]}df=pd.DataFrame(data)#绘制条形图df.set_index('组别')['均值'].plot.bar(color='coral')plt.title('不同组别的均值比较')plt.xlabel('组别')plt.xticks(rotation=0)plt.ylabel('均值')plt.show()#383-4、变化趋势对比importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'年份':['2020','2021','2022','2023'],'产品A':[100,150,200,250],'产品B':[80,120,180,220]}df=pd.DataFrame(data).set_index('年份')#绘制并排条形图df.plot.bar()plt.title('产品A和产品B的年度销量比较')plt.xlabel('年份')plt.ylabel('销量')plt.xticks(rotation=0)plt.legend(title='产品')plt.show()#383-5、数据报告与演示importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'项目':['项目1','项目2','项目3'],'完成进度':[60,80,45]}df=pd.DataFrame(data)#绘制条形图df.set_index('项目')['完成进度'].plot.bar(color='purple')plt.title('项目完成进度')plt.xlabel('项目')plt.xticks(rotation=0)plt.ylabel('完成进度(%)')plt.ylim(0,100)plt.show()#383-6、探索性数据分析importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'城市':['纽约','洛杉矶','芝加哥','休斯顿'],'人口':[8419600,3980400,2716000,2328000]}df=pd.DataFrame(data)#绘制条形图df.set_index('城市')['人口'].plot.bar(color='blue')plt.title('美国主要城市人口比较')plt.xlabel('城市')plt.xticks(rotation=45)plt.ylabel('人口')plt.show()#383-7、多个分类比较importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'产品':['产品A','产品B','产品C'],'2022年销售':[300,450,350],'2023年销售':[400,500,650]}df=pd.DataFrame(data)#设置产品为索引,绘制堆叠条形图df.set_index('产品').plot.bar(stacked=True)plt.title('产品销售比较(2022vs2023)')plt.xlabel('产品')plt.xticks(rotation=45)plt.ylabel('销售')plt.legend(title='年')plt.show()383-6-3、结果输出#383、pandas.Series.plot.bar方法#383-1、类别数据比较#见图14#383-2、频率分布#见图15#383-3、展示统计结果#见图16#383-4、变化趋势对比#见图17#383-5、数据报告与演示#见图18#383-6、探索性数据分析#见图19#383-7、多个分类比较#见图20图14:图15:图16:图17:图18:图19:图20:384、pandas.Series.plot.barh方法384-1、语法#384、pandas.Series.plot.barh方法pandas.Series.plot.barh(x=None,y=None,**kwargs)Makeahorizontalbarplot.Ahorizontalbarplotisaplotthatpresentsquantitativedatawithrectangularbarswithlengthsproportionaltothevaluesthattheyrepresent.Abarplotshowscomparisonsamongdiscretecategories.Oneaxisoftheplotshowsthespecificcategoriesbeingcompared,andtheotheraxisrepresentsameasuredvalue.Parameters:xlabelorposition,optionalAllowsplottingofonecolumnversusanother.Ifnotspecified,theindexoftheDataFrameisused.ylabelorposition,optionalAllowsplottingofonecolumnversusanother.Ifnotspecified,allnumericalcolumnsareused.colorstr,array-like,ordict,optionalThecolorforeachoftheDataFrame’scolumns.Possiblevaluesare:Asinglecolorstringreferredtobyname,RGBorRGBAcode,forinstance‘red’or‘#a98d19’.Asequenceofcolorstringsreferredtobyname,RGBorRGBAcode,whichwillbeusedforeachcolumnrecursively.Forinstance[‘green’,’yellow’]eachcolumn’sbarwillbefilledingreenoryellow,alternatively.Ifthereisonlyasinglecolumntobeplotted,thenonlythefirstcolorfromthecolorlistwillbeused.Adictoftheform{columnnamecolor},sothateachcolumnwillbecoloredaccordingly.Forexample,ifyourcolumnsarecalledaandb,thenpassing{‘a’:‘green’,‘b’:‘red’}willcolorbarsforcolumnaingreenandbarsforcolumnbinred.**kwargsAdditionalkeywordargumentsaredocumentedinDataFrame.plot().Returns:matplotlib.axes.Axesornp.ndarrayofthemAnndarrayisreturnedwithonematplotlib.axes.Axespercolumnwhensubplots=True.384-2、参数384-2-1、x(可选,默认值为None):字符串或None,在Series对象中,默认使用其索引作为y轴。如果提供x参数,它将采用x字段作为x轴的值,这在DataFrame的上下文中更常用,对于Series,通常不用设置。384-2-2、y(可选,默认值为None):字符串或None,与x参数类似,通常不适用于Series,而是用于DataFrame进行指定y轴的数值,对于Series,数据本身作为y轴的值。384-2-3、**kwargs(可选):其他参数,传递给matplotlib的bar方法,例如:color:设置条形的颜色;alpha:设置透明度;width:设置条形的宽度;edgecolor:设置条形的边缘颜色;title:图表的;fontsize:轴标签和的字体大小等。384-3、功能        将Series数据以水平条形图的形式进行可视化,这使得数据的比较更加直观,尤其方便于展示不同类别的大小差异,适合用于查看长分类名称的情况等。384-4、返回值        返回绘制该图的Axed对象,这样用户可以在图形上进一步进行修改和自定义,可以使用该对象的方法进行额外的图形调整,如添加、标签等。384-5、说明    使用场景:384-5-1、类别比较:当需要比较不同类别之间的数值时,水平条形图可以使长类别名称得到更好的展示。例如,展示不同产品销售额、不同国家的人口、用户满意度评分等。384-5-2、处理长类别标签:在类别的标签较长或数量较多时,水平条形图能有效避免标签重叠的问题,使得数据更加清晰易读。384-5-3、展示分布:用于展示数据的分布情况。比如,展示各个年龄段的人数分布、各个地区的销售数据等,能够直观反映每个类别的相对大小。384-5-4、数据排名:当需要展示数据的排名,比如最佳销售人员、最受欢迎的电影等,水平条形图能够有效地显示不同条目之间的相对排名。384-5-5、分组比较:在分析分组数据时,可以使用水平条形图展示不同组别之间的比较情况。例如,比较不同部门的业绩或项目的进展。384-5-6、结果展示:在报告或演讲中,使用水平条形图可以帮助观众快速抓住数据的重点,增强信息的传达效果。384-6、用法384-6-1、数据准备无384-6-2、代码示例#384、pandas.Series.plot.barh方法#384-1、类别比较importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'产品':['产品A','产品B','产品C','产品D'],'销售额':[150,250,100,200]}df=pd.DataFrame(data)#绘制水平条形图df.plot.barh(x='产品',y='销售额',color='blue',legend=False)plt.title('不同产品销售额比较')plt.xlabel('销售额(万元)')plt.ylabel('产品')plt.show()#384-2、处理长类别标签importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'国家':['中华人民共和国','美利坚合众国','印度','巴西','俄罗斯联邦'],'人口':[1400000000,330000000,1400000000,210000000,160000000]}df=pd.DataFrame(data)#绘制水平条形图df.plot.barh(x='国家',y='人口',color='green',legend=False)plt.title('各国人口比较')plt.xlabel('人口(亿)')plt.ylabel('国家')plt.show()#384-3、展示分布importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据age_groups=['0-18','19-35','36-50','51-65','65+']population=[1000,2500,3000,1500,800]df=pd.Series(population,index=age_groups)#绘制水平条形图df.plot.barh(color='purple',legend=False)plt.title('不同年龄段人口分布')plt.xlabel('人口数量')plt.ylabel('年龄段')plt.show()#384-4、数据排名importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'员工':['小张','小李','小王','小赵','小孙'],'销售业绩':[400,700,500,300,600]}df=pd.DataFrame(data)#按销售业绩排名df=df.sort_values(by='销售业绩',ascending=False)#绘制水平条形图df.plot.barh(x='员工',y='销售业绩',color='skyblue',legend=False)plt.title('员工销售业绩排名')plt.xlabel('销售业绩(万元)')plt.ylabel('员工')plt.show()#384-5、分组比较importpandasaspdimportmatplotlib.pyplotasplt#创建示例数据data={'部门':['市场部','研发部','销售部','客服部'],'2022年业绩':[150,200,250,100],'2023年业绩':[180,220,270,120]}df=pd.DataFrame(data)#设置数据为多层索引df.set_index('部门',inplace=True)df.plot.barh(stacked=False)plt.title('各部门年度业绩比较')plt.xlabel('业绩(万元)')plt.ylabel('部门')plt.legend(title='年度')plt.show()384-6-3、结果输出#384、pandas.Series.plot.barh方法#384-1、类别比较#见图21#384-2、处理长类别标签#见图22#384-3、展示分布#见图23#384-4、数据排名#见图24#384-5、分组比较#见图25图21:图22:图23:图24:图25:385、pandas.Series.plot.box方法385-1、语法#385、pandas.Series.plot.box方法pandas.Series.plot.box(by=None,**kwargs)MakeaboxplotoftheDataFramecolumns.Aboxplotisamethodforgraphicallydepictinggroupsofnumericaldatathroughtheirquartiles.TheboxextendsfromtheQ1toQ3quartilevaluesofthedata,withalineatthemedian(Q2).Thewhiskersextendfromtheedgesofboxtoshowtherangeofthedata.Thepositionofthewhiskersissetbydefaultto1.5*IQR(IQR=Q3-Q1)fromtheedgesofthebox.Outlierpointsarethosepasttheendofthewhiskers.ForfurtherdetailsseeWikipedia’sentryforboxplot.Aconsiderationwhenusingthischartisthattheboxandthewhiskerscanoverlap,whichisverycommonwhenplottingsmallsetsofdata.Parameters:bystrorsequenceColumnintheDataFrametogroupby.Changedinversion1.4.0reviously,byissilentlyignoreandmakesnogroupings**kwargsAdditionalkeywordsaredocumentedinDataFrame.plot().Returns:matplotlib.axes.Axesornumpy.ndarrayofthem.385-2、参数385-2-1、by(可选,默认值为None):指定分组变量,可以用来将数据按某个分类变量分组绘制多个箱线图,如果没有此参数,绘制的箱线图将显示整个系列的分布。385-2-3、**kwargs(可选):其他参数,传递给matplotlib的bar方法,例如:color:设置条形的颜色;alpha:设置透明度;width:设置条形的宽度;edgecolor:设置条形的边缘颜色;title:图表的;fontsize:轴标签和的字体大小等。385-3、功能        用于绘制箱线图(BoxPlot),以可视化一维数据的分布,箱线图能够显示数据的中位数、四分位数、异常值等信息,非常适合用于了解数据的分布情况和特征。385-4、返回值        返回一个MatplotlibAxes对象,允许进一步的自定义和调整。385-5、说明    使用场景:385-5-1、数据分布分析:在数据探索阶段,箱线图可用于快速了解数据的分布情况、集中趋势和离散程度,帮助识别数据的偏态和异常值。例如,分析销售数据的分布时,可以识别出某些区域的异常销售情况。385-5-2、比较不同分类的数值:箱线图可以清晰地展示不同组别之间的差异。例如,分析不同产品类别的价格分布,可以通过绘制分组箱线图来比较各类别的价格中位数及异常值,从而判断最佳定价策略。385-5-3、财务数据分析:在财务领域,箱线图可以用于展示不同时间段(如季度、年度)的收入、费用及利润的分布,识别潜在的财务风险和异常情况。例如,识别某个月的异常支出。385-5-4、实验数据分析:在科研实验中,特别是在生物统计学中,可以使用箱线图来比较不同处理组的实验结果,判断各组之间的差异是否显著,从而支持实验结论。385-5-5、教育数据分析:教育机构可以利用箱线图分析学生成绩的分布,识别高分和低分学生,有针对性地展开辅导,同时可以比较不同年级或班级之间的学习成绩差异。385-5-6、用户行为分析:在产品、网站或应用的用户行为分析中,箱线图可以用于展示用户访问时长、页面停留时间等指标的分布,帮助识别出活跃和沉默用户,优化用户体验。385-5-7、质量控制:制造业或服务行业可以利用箱线图分析产品质量数据,如生产缺陷率、时间测量等,监控生产过程是否稳定,并快速识别问题领域。385-6、用法385-6-1、数据准备无385-6-2、代码示例#385、pandas.Series.plot.box方法#385-1、数据分布分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'成绩':[88,92,79,95,90,67,85,100,84,76,55,97]}df=pd.DataFrame(data)#绘制箱线图plt.figure(figsize=(8,6))df['成绩'].plot.box()plt.title('学生成绩分布箱线图')plt.ylabel('成绩')plt.show()#385-2、比较不同分类的数值importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据data={'产品类别':['电子','电子','服装','服装','家具','家具','电子','服装','家具','电子'],'价格':[200,150,50,80,300,280,220,60,100,190]}df=pd.DataFrame(data)#绘制按“产品类别”分类的箱线图plt.figure(figsize=(8,6))df.boxplot(column='价格',by='产品类别')plt.title('不同产品类别价格分布箱线图')plt.suptitle('')plt.ylabel('价格')plt.show()#385-3、财务数据分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(每月收入)data={'月份':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct'],'收入':[1500,2000,2500,2400,3000,2200,3200,3150,-500,4000]#九月有异常值}df=pd.DataFrame(data)#绘制收入箱线图plt.figure(figsize=(8,6))df['收入'].plot.box()plt.title('每月收入分布箱线图')plt.ylabel('收入')plt.show()#385-4、用户行为分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(用户访问时长)data={'用户类型':['活跃','活跃','沉默','活跃','沉默','沉默','沉默','活跃','活跃','沉默'],'访问时长(分钟)':[30,45,1,50,2,10,5,40,55,3]}df=pd.DataFrame(data)#绘制按“用户类型”分类的访问时长箱线图plt.figure(figsize=(8,6))df.boxplot(column='访问时长(分钟)',by='用户类型')plt.title('不同用户类型访问时长分布箱线图')plt.suptitle('')plt.ylabel('访问时长(分钟)')plt.show()#385-5、教育数据分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(班级成绩)data={'班级':['一班','一班','二班','二班','二班','一班','一班','二班','三班','三班'],'考试成绩':[85,90,76,88,92,69,95,80,70,100]}df=pd.DataFrame(data)#绘制按“班级”分类的考试成绩箱线图plt.figure(figsize=(8,6))df.boxplot(column='考试成绩',by='班级')plt.title('不同班级考试成绩分布箱线图')plt.suptitle('')plt.ylabel('考试成绩')plt.show()#385-6、健康数据分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(体重数据)data={'性别':['男','男','女','女','女','男','女','男','女','男'],'体重(kg)':[70,80,55,60,50,75,58,85,52,90]}df=pd.DataFrame(data)#绘制按“性别”分类的体重箱线图plt.figure(figsize=(8,6))df.boxplot(column='体重(kg)',by='性别')plt.title('不同性别体重分布箱线图')plt.suptitle('')plt.ylabel('体重(kg)')plt.show()#385-7、产品评分分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(产品评分)data={'产品':['A','B','A','B','A','B','C','C','C','C'],'评分':[4,5,3,4,5,2,4,4,3,5]}df=pd.DataFrame(data)#绘制按“产品”分类的评分箱线图plt.figure(figsize=(8,6))df.boxplot(column='评分',by='产品')plt.title('不同产品评分分布箱线图')plt.suptitle('')plt.ylabel('评分')plt.ylim(0,6)#设置y轴范围plt.show()#385-8、销售数据分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(季度销售额)data={'季度':['Q1','Q2','Q3','Q4','Q1','Q2','Q3','Q4'],'销售额(万)':[200,220,250,300,280,300,320,350]}df=pd.DataFrame(data)#绘制按“季度”分类的销售额箱线图plt.figure(figsize=(8,6))df.boxplot(column='销售额(万)',by='季度')plt.title('不同季度销售额分布箱线图')plt.suptitle('')plt.ylabel('销售额(万)')plt.show()#385-9、在线课程完成情况分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(课程完成情况)data={'课程':['课程A','课程B','课程C','课程A','课程B','课程C','课程A','课程B'],'完成率(%)':[85,90,75,80,60,95,70,100]}df=pd.DataFrame(data)#绘制按“课程”分类的完成率箱线图plt.figure(figsize=(8,6))df.boxplot(column='完成率(%)',by='课程')plt.title('不同课程完成率分布箱线图')plt.suptitle('')plt.ylabel('完成率(%)')plt.ylim(0,110)#设置y轴范围plt.show()#385-10、网站流量分析importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']matplotlib.rcParams['axes.unicode_minus']=False#解决负号'-'显示问题#创建示例数据(每日流量)data={'日期':pd.date_range(start='2023-01-01',periods=30),'流量(人次)':[120,150,130,200,180,160,175,190,210,220,150,130,170,160,165,180,185,190,200,210,150,140,180,175,160,155,165,190,200,210]}df=pd.DataFrame(data)#绘制流量的箱线图plt.figure(figsize=(10,6))df['流量(人次)'].plot.box()plt.title('每日网站流量分布箱线图')plt.ylabel('流量(人次)')plt.show()385-6-3、结果输出#385、pandas.Series.plot.box方法#385-1、数据分布分析#见图26#385-2、比较不同分类的数值#见图27#385-3、财务数据分析#见图28#385-4、用户行为分析#见图29#385-5、教育数据分析#见图30#385-6、健康数据分析#见图31#385-7、产品评分分析#见图32#385-8、销售数据分析#见图33#385-9、在线课程完成情况分析#见图34#385-10、网站流量分析#见图35图26: 图27:图28:图29:图30:图31:图32:图33:图34:图35: 二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 11:32 , Processed in 0.756552 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表