在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()
函数来创建直方图,并使用其他函数来添加标签和标题。现在,你已经知道如何创建直方图,可以使用这个工具来更好地分析数据。