在Pandas / Matplotlib中根据类绘制直方图

在Pandas / Matplotlib中根据类绘制直方图

直方图是一种将数据分布可视化的图表类型,常用于探索性数据分析和统计分析中。在数据科学领域,Python中的Pandas和Matplotlib是最流行的数据分析工具之一。 本文将介绍如何在Pandas / Matplotlib中使用对象数据类型来创建直方图。

Pandas中的直方图

在Pandas中,我们可以使用 hist() 函数来绘制直方图。对于数值型数据,hist() 函数的参数和Matplotlib的 hist() 函数非常相似。然而,Pandas通过将数据集拆分为 ‘bin’,也就是数据的离散化区间,更加简单地创建直方图。

下面是一个示例:我们将使用Pandas的 read_csv() 函数来读取一个名为 iris.csv 的数据集(鸢尾花数据集)。该数据集包含150个样本,4个特征。我们将使用其中两个特征,即花萼长度(Sepal.Length)和花片长度(Petal.Length)。

首先,我们导入必要的数据科学库:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

然后,我们使用 read_csv() 函数来读取数据:

df = pd.read_csv('iris.csv')

我们可以和使用Pandas DataFrame描述性统计表中的一样,查看数据的基本信息:

df[['Sepal.Length', 'Petal.Length']].describe()

输出:

       Sepal.Length  Petal.Length
count    150.000000    150.000000
mean       5.843333      3.758667
std        0.828066      1.764420
min        4.300000      1.000000
25%        5.100000      1.600000
50%        5.800000      4.350000
75%        6.400000      5.100000
max        7.900000      6.900000

接下来,我们可以使用 hist() 函数创建直方图。 我们可以通过以下代码从数据集中选取两列,然后使用Pandas的 hist() 函数创建直方图。

df[['Sepal.Length', 'Petal.Length']].hist(bins=10, alpha=0.5)
plt.show()

我们可以看到,花萼长度和花片长度都具有双峰分布的特点,其中花萼长度的分布更接近正态分布。

Matplotlib中的直方图

在Matplotlib中,可以使用 hist() 函数创建直方图。这与Pandas的 hist() 函数非常相似。我们可以使用相同的示例数据来创建Matplotlib的直方图。

首先,我们需要导入必要的数据科学库:

import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline

然后,我们使用 read_csv() 函数来读取数据:

df = pd.read_csv('iris.csv')

接下来,我们可以创建Matplotlib的直方图。我们可以使用 hist() 函数,将直方图添加到当前绘图中。

plt.hist(df['Sepal.Length'], bins=10, alpha=0.5, label='Sepal.Length')
plt.hist(df['Petal.Length'], bins=10, alpha=0.5, label='Petal.Length')
plt.legend(loc='upper right')
plt.xlabel('Length (cm)')
plt.ylabel('Frequency')
plt.title('Histogram of Sepal/Petal Lengths')
plt.show()

在上图中,我们使用 hist() 函数分别绘制了花萼长度和花片长度的直方图,设置了透明度为 alpha=0.5 并使用 label 参数添加标签,使用 legend() 函数在图中添加图例。最后,我们使用 xlabel()ylabel() 函数设置轴标签,使用 title() 函数给图表添加标题。

对象数据类型的直方图

到目前为止,我们仅使用了数值型数据来绘制直方图。但对于对象数据类型,我们也可以使用类似的方法来创建直方图。在Pandas中,我们可以使用 value_counts() 函数来计算各个值的频率,并使用Matplotlib绘制直方图。

下面是一个示例: 我们将使用Pandas的 read_csv() 函数来读取一个名为 titanic.csv 的数据集。该数据集包含有关泰坦尼克号上乘客的信息。我们将使用其中一个特征,即乘客的性别。

首先,我们导入必要的数据科学库:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

然后,我们使用 read_csv() 函数来读取数据:

df = pd.read_csv('titanic.csv')

我们可以使用 value_counts() 函数计算乘客数据集中不同性别的数量:

gender_counts = df['Sex'].value_counts().sort_index()
print(gender_counts)

输出:

female    314
male      577
Name: Sex, dtype: int64

接下来,我们可以使用这些值来创建类别型直方图。

plt.bar(gender_counts.index, gender_counts.values)
plt.xlabel('Gender')
plt.ylabel('Frequency')
plt.title('Histogram of Passenger Gender')
plt.show()

在上图中,我们使用 bar() 函数创建了一个类别型直方图。我们使用 xlabel()ylabel() 函数设置轴标签,使用 title() 函数给图表添加标题。

结论

在Python的Pandas和Matplotlib库中,直方图是一个简单而有用的工具来可视化和分析数据分布和频率。在本文中,我们介绍了如何使用对象数据类型和数值型数据来创建直方图。我们使用了Pandas的 hist() 函数和Matplotlib的 hist()bar() 函数来创建直方图,并使用其他函数来添加标签和标题。现在,你已经知道如何创建直方图,可以使用这个工具来更好地分析数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程