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

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

[复制链接]

1

主题

0

回帖

4

积分

新手上路

积分
4
发表于 2024-9-10 03:38:24 | 显示全部楼层 |阅读模式
目录一、用法精讲386、pandas.Series.plot.density方法386-1、语法386-2、参数386-3、功能386-4、返回值386-5、说明386-6、用法386-6-1、数据准备386-6-2、代码示例386-6-3、结果输出387、pandas.Series.plot.hist方法387-1、语法387-2、参数387-3、功能387-4、返回值387-5、说明387-6、用法387-6-1、数据准备387-6-2、代码示例387-6-3、结果输出388、pandas.Series.plot.kde方法388-1、语法388-2、参数388-3、功能388-4、返回值388-5、说明388-6、用法388-6-1、数据准备388-6-2、代码示例388-6-3、结果输出389、pandas.Series.plot.line方法389-1、语法389-2、参数389-3、功能389-4、返回值389-5、说明389-6、用法389-6-1、数据准备389-6-2、代码示例389-6-3、结果输出390、pandas.Series.plot.pie方法390-1、语法390-2、参数390-3、功能390-4、返回值390-5、说明390-6、用法390-6-1、数据准备390-6-2、代码示例390-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲386、pandas.Series.plot.density方法386-1、语法#386、pandas.Series.plot.density方法pandas.Series.plot.density(bw_method=None,ind=None,**kwargs)GenerateKernelDensityEstimateplotusingGaussiankernels.Instatistics,kerneldensityestimation(KDE)isanon-parametricwaytoestimatetheprobabilitydensityfunction(PDF)ofarandomvariable.ThisfunctionusesGaussiankernelsandincludesautomaticbandwidthdetermination.Parameters:bw_methodstr,scalarorcallable,optionalThemethodusedtocalculatetheestimatorbandwidth.Thiscanbe‘scott’,‘silverman’,ascalarconstantoracallable.IfNone(default),‘scott’isused.Seescipy.stats.gaussian_kdeformoreinformation.indNumPyarrayorint,optionalEvaluationpointsfortheestimatedPDF.IfNone(default),1000equallyspacedpointsareused.IfindisaNumPyarray,theKDEisevaluatedatthepointspassed.Ifindisaninteger,indnumberofequallyspacedpointsareused.**kwargsAdditionalkeywordargumentsaredocumentedinDataFrame.plot().Returns:matplotlib.axes.Axesornumpy.ndarrayofthem.386-2、参数386-2-1、bw_method(可选,默认值为None):str,float或callable,指定用于估计密度的带宽(bandwidth)选择方法。如果是str,可以使用'scott'或'silverman',这是两种常用的带宽选择规则:'scott':带宽$=n^{-1/(d+4)}$,其中n是样本数量,d是数据维度。'silverman':带宽$=\left(\frac{n(d+2)}{4}\right)^{-1/(d+4)}$。如果是float,直接指定带宽的值。如果是callable,可以传递自定义的带宽选择函数。如果None,则使用默认的带宽选择方法(即scott)。386-2-2、ind(可选,默认值为None):numpy.array或int,定义在绘制密度图时,密度估计的横坐标点(即用于评估密度估计的点)。如果是int,则代表将横坐标划分为ind个等间隔的点。如果是numpy.array,则指定评估密度估计的具体点。如果None,则会在数据范围内自动生成一个等间隔的点集。386-2-3、**kwargs(可选):用于传递给matplotlib的其他关键词参数,这些参数可以自定义图形的各种属性,比如颜色、线型、标签等。386-3、功能        基于数据生成核密度估计图,它将数据的分布以平滑曲线的形式展示出来,便于观察数据的整体分布趋势以及其集中程度。386-4、返回值        返回一个matplotlib.Axes对象,通过它可以进一步定制和显示图形,如果在交互式环境中使用(如JupyterNotebook),图形会自动显示,通过这些参数的调节,你可以控制核密度估计图的平滑程度、评估点的数量以及图形的外观。386-5、说明    使用场景:386-5-1、数据分布的可视化: KDE图可以用来直观地显示数据的概率密度分布,与直方图类似,但相比之下更加平滑和连续,这在需要理解数据的分布特征时非常有用386-5-2、与正态分布的比较: 在分析数据时,KDE图可以用来与标准正态分布进行比较,以判断数据是否符合正态分布,或识别出数据的偏态、峰度等特征。386-5-3、多组数据的比较: 通过绘制多个系列的KDE图,可以比较不同数据集的分布差异。例如,比较不同组别的特征分布情况,识别组间差异。386-5-4、异常值检测: KDE图可以帮助识别数据中的异常值或极端值,这些点通常位于密度非常低的区域。386-5-5、替代直方图: 在数据量较小时,直方图可能不够平滑且受区间划分影响较大,KDE图可以作为直方图的替代品,提供更平滑的分布曲线。386-5-6、概率估计:在某些场景下,可以利用KDE图进行概率密度的估计,从而进一步计算数据点落在某个区间内的概率。386-6、用法386-6-1、数据准备无386-6-2、代码示例#386、pandas.Series.plot.density方法#386-1、数据分布的可视化importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成服从正态分布的随机数据data=np.random.normal(loc=0,scale=1,size=1000)series=pd.Series(data)#绘制核密度估计图series.plot.density()plt.title('KernelDensityEstimationofNormallyDistributedData')plt.xlabel('Value')plt.ylabel('Density')plt.show()#386-2、与正态分布的比较importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromscipy.statsimportnorm#生成服从正态分布的随机数据data=np.random.normal(loc=0,scale=1,size=1000)series=pd.Series(data)#绘制核密度估计图series.plot.density(label='KDE')#绘制标准正态分布的概率密度函数x=np.linspace(-4,4,1000)plt.plot(x,norm.pdf(x),label='NormalDistribution',linestyle='--')plt.title('KDEvsNormalDistribution')plt.xlabel('Value')plt.ylabel('Density')plt.legend()plt.show()#386-3、多组数据的比较importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成两组不同分布的随机数据data1=np.random.normal(loc=0,scale=1,size=1000)data2=np.random.normal(loc=2,scale=1.5,size=1000)series1=pd.Series(data1)series2=pd.Series(data2)#绘制两组数据的核密度估计图series1.plot.density(label='Group1')series2.plot.density(label='Group2')plt.title('ComparisonofKDEforTwoGroups')plt.xlabel('Value')plt.ylabel('Density')plt.legend()plt.show()#386-4、异常值检测importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成服从正态分布的随机数据,并添加异常值data=np.random.normal(loc=0,scale=1,size=1000)outliers=np.random.uniform(low=-8,high=8,size=10)data_with_outliers=np.concatenate([data,outliers])series=pd.Series(data_with_outliers)#绘制核密度估计图series.plot.density()plt.title('KDEwithOutliers')plt.xlabel('Value')plt.ylabel('Density')plt.show()#386-5、替代直方图importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成较少的数据点data=np.random.normal(loc=0,scale=1,size=50)series=pd.Series(data)#绘制直方图和核密度估计图series.plot.hist(density=True,alpha=0.5,bins=10,label='Histogram')series.plot.density(label='KDE')plt.title('HistogramvsKDE')plt.xlabel('Value')plt.ylabel('Density')plt.legend()plt.show()#386-6、概率估计importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromscipy.integrateimportsimps#生成服从正态分布的随机数据data=np.random.normal(loc=0,scale=1,size=1000)series=pd.Series(data)#绘制核密度估计图ax=series.plot.density()plt.title('KDEandProbabilityEstimation')plt.xlabel('Value')plt.ylabel('Density')#计算在区间[-1,1]内的概率kde=series.plot.density().get_lines()[0].get_data()x_values=kde[0]y_values=kde[1]#找到x在[-1,1]之间的索引mask=(x_values>=-1)&(x_values
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-8 11:40 , Processed in 0.554597 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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