使用 pandas 交叉表创建条形图
在本文中,我们将讨论如何在Python中使用 pandas crosstab 创建条形图。首先让我们更多地了解交叉表,它是两个或多个变量的简单交叉表。
什么是交叉制表?
它是一个简单的交叉表,可以帮助我们理解两个或多个变量之间的关系。它将提供对数据的清晰理解,并使分析更容易。
让我们举个例子,如果我们使用一个包含人们国籍、性别、年龄和姓名的人的惯用手数据集。假设我们要分析民族与民族习惯之间的关系。交叉表为您提供它们之间的关系。
使用熊猫的交叉表
在创建条形图之前,我们应该使用 pandas 创建交叉表。
Syntax: pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name=’All’, dropna=True, normalize=False
代码:
Python
# importing the pandas library
import pandas as pd
# Reading the csv file and storing it
# in a variable
df = pd.read_csv('Data.csv')
# Crosstab function is called
# 2 parameters are passed
# The table is stored in a variable
crosstb = pd.crosstab(df.Nationality, df.Handedness)
Python3
# importing the pandas library
import pandas as pd
# Reading the csv file and storing it in a variable
df = pd.read_csv('Data.csv')
# Creating crosstab
crosstb = pd.crosstab(df.Nationality, df.Handedness)
# Creating barplot
barplot = crosstb.plot.bar(rot=0)
Python
# importing the pandas library
import pandas as pd
# Reading csv file
df = pd.read_csv('Data.csv')
# Creating crosstab
crosstb = pd.crosstab(df.Nationality, df.Handedness)
# Creating barplot
pl = crosstb.plot(kind="bar", stacked=True, rot=0)
Python3
# importing the module
import pandas as pd
# reading the csv file
df = pd.read_csv('Data.csv')
# Crosstab with three variables
crosstb = pd.crosstab(df.Sex, [df.Nationality,
df.Handedness])
# Bar ploting
a = crosstb.plot(kind='bar', rot=0)
a.legend(title='Handedness', bbox_to_anchor=(1, 1.02),
loc='upper left')
输出:
创建条形图
条形图最常用于在不同组之间进行比较或跟踪随时间的变化。对交叉表使用条形图是总结交叉表并更好地分析它们的有效方法之一。
Syntax: DataFrame.plot.bar(x=None, y=None, **kwargs)
代码:
Python3
# importing the pandas library
import pandas as pd
# Reading the csv file and storing it in a variable
df = pd.read_csv('Data.csv')
# Creating crosstab
crosstb = pd.crosstab(df.Nationality, df.Handedness)
# Creating barplot
barplot = crosstb.plot.bar(rot=0)
输出:
堆积条形图
在这里,我们将通过将堆叠参数传递为 True,通过数据框创建堆叠条形图。
Dataframe.plot(kind=”bar”, stacked = True, rot=0)
代码:
Python
# importing the pandas library
import pandas as pd
# Reading csv file
df = pd.read_csv('Data.csv')
# Creating crosstab
crosstb = pd.crosstab(df.Nationality, df.Handedness)
# Creating barplot
pl = crosstb.plot(kind="bar", stacked=True, rot=0)
输出:
使用交叉表中的两个以上变量创建条形图
在上面的例子中,我们发现了国籍和人们的惯用手之间的关系。我们还可以创建具有两个以上值的交叉表。我们将在下面的示例中实现这一点。
Python3
# importing the module
import pandas as pd
# reading the csv file
df = pd.read_csv('Data.csv')
# Crosstab with three variables
crosstb = pd.crosstab(df.Sex, [df.Nationality,
df.Handedness])
# Bar ploting
a = crosstb.plot(kind='bar', rot=0)
a.legend(title='Handedness', bbox_to_anchor=(1, 1.02),
loc='upper left')
输出: