📅  最后修改于: 2023-12-03 15:04:02.953000             🧑  作者: Mango
当我们需要将两列数据之间的频率关系可视化时,Python为我们提供了便捷的工具。在本文中,我们将介绍如何使用Python创建频率表。
在开始之前,我们需要导入pandas库和numpy库。如果您还没有安装这些库,请先执行下面的命令:
!pip install pandas
!pip install numpy
首先,我们需要加载我们的数据并将其存储在pandas dataframe中。在这个例子中,我们将使用另一个名为“data.csv”的文件。你可以将你自己的数据集替换掉。
import pandas as pd
data = pd.read_csv('data.csv')
print(data.head())
接下来,我们需要计算两列数据之间的频率。现在假设我们的数据有两列:gender和age。
我们将使用pd.crosstab()函数来计算频率。下面是它的语法:
pd.crosstab(index, columns, margins=False, dropna=True)
freq = pd.crosstab(data.gender, data.age, margins=True, dropna=True)
print(freq)
现在我们已经计算了频率。让我们将频率表转换为百分比,并使用matplotlib库创建一个柱状图可视化频率表。
import matplotlib.pyplot as plt
import numpy as np
# 利用除以总和,将频率表转为百分比
freq_pct = freq.div(freq.iloc[-1, -1]*0.01)
freq_pct = freq_pct.iloc[:-1,:-1]
# 创建柱状图
fig = plt.figure(figsize=(10, 10))
# 按行遍历每个单元格
for i in range(0,freq_pct.shape[0]):
plt.bar(np.arange(freq_pct.shape[1])+(0.1*i), freq_pct.iloc[i,:], width = 0.1, label = freq_pct.index[i])
# 添加坐标轴标签和标题
plt.xlabel('Age Group')
plt.ylabel('Percentage')
plt.title('Gender Distribution by Age Group')
# 添加图例
plt.legend(loc='upper right')
# 显示图形
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data = pd.read_csv('data.csv')
freq = pd.crosstab(data.gender, data.age, margins=True, dropna=True)
freq_pct = freq.div(freq.iloc[-1, -1]*0.01)
freq_pct = freq_pct.iloc[:-1,:-1]
fig = plt.figure(figsize=(10, 10))
for i in range(0,freq_pct.shape[0]):
plt.bar(np.arange(freq_pct.shape[1])+(0.1*i), freq_pct.iloc[i,:], width = 0.1, label = freq_pct.index[i])
plt.xlabel('Age Group')
plt.ylabel('Percentage')
plt.title('Gender Distribution by Age Group')
plt.legend(loc='upper right')
plt.show()
以上就是本文介绍的如何使用Python在两列之间创建频率表的步骤。如果你有任何问题或建议,请随时在评论区留言。谢谢!