如何在Python中创建频率表
在这篇文章中,我们将看到如何在Python中创建频率表
频率是对一个特定值在我们的数据中出现的次数的统计。频率表显示了一组数值以及它们出现的频率。它们使我们能够更好地了解哪些数据值是常见的,哪些是不常见的。这些表格是安排你的数据和与他人交流结果的一个伟大方法。在这篇文章中,让我们演示一下在python中创建频率表的不同方法。
方法1:使用value_counts(方法的简单频率表
让我们看一下我们要处理的数据集。
使用pandas.read_csv()方法导入必要的包并读取数据集。
# import packages
import pandas as pd
import numpy as np
# reading csv file as pandas dataframe
data = pd.read_csv('iris.csv')
data.head()
输出:
现在让我们找出数据集中物种列的单向频率表。
df = data['species'].value_counts()
print(df)
输出:
setosa 50
virginica 50
versicolor 50
Name: species, dtype: int64
方法2:使用pandas.crosstab()方法制作单程频率表
这里我们将使用crosstab()方法来获得频率。
语法: pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name=’All’, dropna=True, normalize=False)
参数:
- index:数组或系列,包含要在行中进行分组的值。
- columns: 包含值的数组或系列,在列中进行分组,这是我们给找到的频率的列起的名字。
- values :一个数字数组,将根据因素进行汇总。
在下面的代码中,我们使用了crosstab函数,我们把物种列作为索引,把’no_of_species’作为频率列的名称。
# import packages
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# reading csv file as pandas dataframe
data = pd.read_csv('iris.csv')
# one way frequency table for the species column.
freq_table = pd.crosstab(data['species'], 'no_of_species')
freq_table
输出:50株属于setosa品种,50株Versicolor和50株Virginica。
如果我们希望频率表是按比例排列的,那么我们就得用每个单独的比例除以总数的总和。
# import packages
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# reading csv file as pandas dataframe
data = pd.read_csv('iris.csv')
# one way frequency table for the species column.
freq_table = pd.crosstab(data['species'], 'no_of_species')
# frequency table in proportion of species
freq_table= freq_table/len(data)
freq_table
输出: 0.333表示总人口的0.333%为套娃,以此类推。
方法3:使用pandas.crosstab()方法制作双向频率表
双向频率表是指我们为数据集中的两个不同特征创建一个频率表。要下载和查看本例中使用的CSV文件,请点击这里。在下面的例子中,我们为数据集中的船舶模式和航段列创建一个双向频率表。
# import packages
import pandas as pd
import numpy as np
# reading csv file
data = pd.read_csv('SampleSuperstore.csv')
# two way frequency table for the ship mode column
# and consumer column of the superstore dataset.
freq_table = pd.crosstab(data['Ship Mode'], data['Segment'])
freq_table
输出:
我们可以把这个表格解释为:对于头等舱的船舶模式,有769个消费者段,485个公司段和284个家庭办公室段,等等。