python描述性统计程序_鸢尾花数据集-描述性统计分析-python篇

该博客介绍了如何使用Python进行描述性统计分析,通过加载鸢尾花数据集,展示了如何计算各类别频数、频率、特征的均值、中位数、众数以及绘制分布图,并探讨了偏度和峰度等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#导入包

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

from sklearn.datasets import load_iris

import warnings

#设置seaborn绘图的样式

sns.set(style=“darkgrid”)

plt.rcParams[“font.family”]=“SimHei”

plt.rcParams[“axes.unicode_minus”]=False

#忽视警告信息

warnings.filterwarnings(“ignore”)

#加载鸢尾花数据集

iris=load_iris()

#display(iris)

#iris.data:鸢尾花数据集

#iris.target:每朵鸢尾花对应的类别。(取值为0,1,2)

print(iris.data[:10],iris.target[:10])

#iris.feature_names:特征列的名称。

#iris.target_name:鸢尾花类别的名称。

print(iris.feature_names,iris.target_names)

#将鸢尾花数据与对应的类型合并,组合成完整的记录。

data=np.concatenate([iris.data,iris.target.reshape(-1,1)],axis=1)

print(type(data))

print(data[:10])

print(data.dtype)

data=pd.DataFrame(data,

columns=[“sepal_length”,“sepal_width”,“petal_length”,“petal_width”,“type”])

print(type(data))

data.sample(10)

print(data.head())

data.info()

#分析

#计算鸢尾花数据中,每个类别出现的频数

frequency=data[“type”].value_counts()

print(frequency)

print(type(frequency))

#计算每个类别出现的频率

percentage=frequency*100/len(data)

print(percentage)

frequency.plot(kind=“bar”)

#计算花萼长度的均值

mean=data[“sepal_length”].mean()

#计算花萼长度的中位数

median=data[“sepal_length”].median()

#计算花萼长度的众数

s=data[“sepal_length”].mode()

#注意,model方法返回的是series类型

print(type(s))

print(s.info())

mode=s.iloc[0]

print(mean,median,mode)

from scipy import stats

stats.mode(data[“sepal_length”]).mode

#绘制数据的分布(直方图+密度图)

sns.distplot(data[“sepal_length”])

plt.axvline(mean,ls="-",color=“r”,label=“均值”)

plt.axvline(median,ls="-",color=“g”,label=“中值”)

plt.axvline(mean,ls="-",color=“indigo”,label=“众数”)

plt.legend()

x=np.arange(10,19)

n=len(x)

#计算四分位的索引(index)

q1_index=(n-1)*0.25

q2_index=(n-1)*0.5

q3_index=(n-1)*0.75

print(q1_index,q2_index,q3_index)

#将index转化成整数类型

index=np.array([q1_index,q2_index,q3_index]).astype(np.int32)

print(x[index])

plt.figure(figsize=(15,4))

plt.xticks(x)

plt.plot(x,np.zeros(len(x)),ls="",marker=“D”,ms=15,label=“元素值”)

plt.plot(x[index],np.zeros(len(index)),ls="",marker=“X”,ms=15,label=“四分位值”)

plt.legend()

x=np.arange(10,20)

n=len(x)

q1_index=(n-1)*0.25

q2_index=(n-1)*0.5

q3_index=(n-1)*0.75

print(q1_index,q2_index,q3_index)

index=np.array([q1_index,q2_index,q3_index])

#计算左边元素的值

left=np.floor(index).astype(np.int32)

#计算右边元素的值

right=np.ceil(index).astype(np.int32)

#获取index的小数部分与整数部分

weight,_=np.modf(index)

#根据左右两边的整数,加权计算四分位数的值,权重与距离成反比

q=x[left] * (1-weight) + x[right] * weight

print(q)

plt.figure(figsize=(15,4))

plt.xticks(x)

plt.plot(x,np.zeros(len(x)),ls="",marker=“D”,ms=15,label=“元素值”)

plt.plot(q,np.zeros(len(index)),ls="",marker=“X”,ms=15,label=“四分位值”)

for v in q:

plt.text(v,0.01,s=v,fontsize=15)

plt.legend()

#numpy

x = [1, 3, 10, 15, 18, 20, 23, 25]

#quantile与percentile都可以就算分位数,不同的是,quantile方法

#q(要计算的分位数)的取值范围为【0,1】,而percentile方法,q的

#取值范围为【0,100】

print(np.quantile(x,q=[0.25,0.5,0.75]))

print(np.percentile(x,q=[25,50,75]))

#pandas

x = [1, 3, 10, 15, 18, 20, 23, 25]

s=pd.Series(x)

print(s.describe())

s.describe(percentiles=[0.25,0.9])

#计算极差

sub=data[“sepal_length”].max()-data[“sepal_length”].min()

#计算方差

var=data[“sepal_length”].var()

#计算标准差

std=data[“sepal_length”].std()

print(sub, var, std)

plt.figure(figsize=(15,4))

plt.ylim(-0.5,1.5)

#print(data[“petal_width”])

plt.plot(data[“petal_length”], np.zeros(len(data)), ls="", marker=“o”,ms=10,color=“g”,label=“花瓣长度”)

plt.plot(data[“petal_width”], np.ones(len(data)), ls="", marker=“o”,ms=10,color=“r”,label=“花瓣宽度”)

plt.axvline(data[“petal_length”].mean(),ls="–",color=“g”,label=“花瓣长度均值”)

plt.axvline(data[“petal_width”].mean(),ls="–",color=“r”,label=“花瓣长度均值”)

plt.legend()

#构造左偏分布数据

t1=np.random.randint(1,11,size=100)

t2=np.random.randint(11,21,size=500)

t3=np.concatenate([t1,t2])

left_skew=pd.Series(t3)

#构造右偏分布数据

t1=np.random.randint(1,11,size=500)

t2=np.random.randint(11,21,size=100)

t3=np.concatenate([t1,t2])

right_skew=pd.Series(t3)

#计算偏度

print(left_skew.skew(),right_skew.skew())

#绘制核密度图 =概率密度图

sns.kdeplot(left_skew,shade=True,label=“左偏”)

sns.kdeplot(right_skew,shade=True,label=“右偏”)

plt.legend()

#标准正态分布

standard_normal=pd.Series(np.random.normal(0,1,size=100000))

print(“标准正态分布峰度:”,standard_normal.kurt(), “标准差:”,standard_normal.std())

print(“花萼宽度峰度:”,data[“sepal_width”].kurt(),“标准差:”,data[“sepal_width”].std())

print(“花瓣长度峰度:”,data[“petal_length”].kurt(),“标准差:”,data[“petal_length”].std())

sns.kdeplot(standard_normal,label=“标准正态分布”)

sns.kdeplot(data[“sepal_width”],label=“花萼宽度”)

sns.kdeplot(data[“petal_length”],label=“花瓣长度”)

### 回答1: 要进行python-鸢尾花数据集iris数据的可视化,首先需要读取数据。我们可以使用pandas库中的read_csv函数来读取csv文件,并将数据存储在一个DataFrame对象中。 ```python import pandas as pd data = pd.read_csv('iris.csv') ``` 读取完数据后,我们可以使用`head()`函数来显示前几行的数据,以便了解数据的结构和内容。 ```python print(data.head()) ``` 下一步,我们可以通过使用`describe()`函数来计算数据描述性统计信息,例如平均值、标准差、最大值、最小值等。 ```python print(data.describe()) ``` 要绘制散点图,我们可以使用`seaborn`和`matplotlib`库。首先,我们需要安装这两个库,使用`pip`命令: ``` pip install seaborn matplotlib ``` 然后,我们可以使用`seaborn`库中的`scatterplot()`函数来绘制散点图。以下是一个示例代码: ```python import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=data) plt.show() ``` 上述代码会根据鸢尾花数据集中的花瓣长度和花瓣宽度绘制一个散点图,并使用不同的颜色表示不同的鸢尾花种类。 这些是python-鸢尾花数据集iris数据可视化的基本步骤。请根据需要进行相应的修改和扩展。 ### 回答2: Python中有很多数据可视化的库,比如Matplotlib和Seaborn可以帮助我们对数据进行可视化处理。接下来我将展示如何使用Python读取鸢尾花数据集,并进行数据可视化。 首先,我们需要导入相关的库和数据集。 ```python import pandas as pd import seaborn as sns df = sns.load_dataset('iris') ``` 通过以上代码,我们通过Seaborn库的load_dataset函数直接加载了鸢尾花数据集,并将数据存储在一个DataFrame中(命名为df)。 接下来,我们可以使用.head()函数来查看数据的前几行,以确保数据正确加载。 ```python print(df.head()) ``` 然后,我们可以使用.describe()函数来对数据进行描述性统计。 ```python print(df.describe()) ``` 描述性统计能够提供一些基本的统计信息,比如平均值、标准差、最小值、最大值等。 最后,我们可以使用散点图来可视化数据集。 ```python sns.scatterplot(x='sepal_length', y='sepal_width', hue='species', data=df) ``` 以上代码将使用sepal_length作为x轴,sepal_width作为y轴,hue参数将根据鸢尾花的品种来着色,从而区分不同的品种。 以上就是使用Python进行鸢尾花数据集数据读取、描述性统计和散点图可视化。通过这些步骤,我们能够更好地了解数据集,发现数据的分布和关系,从而对数据进行更进一步的分析或者挖掘。 ### 回答3: 鸢尾花数据集是机器学习和数据分析中常用的一个数据集,由英国统计学家罗纳德·费舍尔在1936年收集而来。该数据包含了三种不同种类的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的花萼长度、花萼宽度、花瓣长度和花瓣宽度的测量值。下面是使用Python鸢尾花数据集进行可视化的步骤: 1. 导入必要的库:首先需要导入一些常用的数据科学库,例如numpy、pandas和matplotlib,以及用于加载数据集的sklearn库。 2. 读取数据:使用sklearn库中的load_iris函数加载鸢尾花数据集,并将其存储在一个变量中。这个数据集是一个sklearn自带的示例数据集,非常容易加载和使用。 3. 显示数据:可以使用pandas库中的DataFrame来显示数据集的前几行。DataFrame是一个二维的表格结构,可以更加直观地展示数据。 4. 描述性统计:使用pandas库的describe函数可以显示数据集的一些基本统计信息,如平均值、标准差、最小值、最大值等。 5. 散点图:使用matplotlib库绘制散点图来可视化鸢尾花数据集。可以根据花瓣长度和花瓣宽度的测量值,将数据集中的每个样本点绘制在二维坐标系上。通过使用不同的颜色或符号来表示不同种类的鸢尾花,可以更好地区分不同种类的花朵。 通过上述步骤,我们可以很方便地读取鸢尾花数据集,显示数据集,获取描述性统计信息,并通过散点图将数据可视化。这些步骤是进行数据分析和机器学习中的基本操作,可以帮助我们更好地理解鸢尾花数据集,并做进一步的分析和挖掘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值