如何在Python中创建频率表?
在本文中,我们将了解如何在Python中创建频率表
频率是特定值在我们的数据中出现或出现的次数的计数。频率表显示一组值以及它们出现的频率。它们使我们能够更好地了解哪些数据值是常见的,哪些是不常见的。这些表格是整理数据并将结果传达给他人的好方法。在本文中,让我们演示在Python中创建频率表的不同方法。
要查看和下载我们在本文中使用的 CSV 文件,请单击此处。
方法一:使用 value_counts() 方法的简单频率表
让我们看一下我们将处理的数据集:
导入必要的包并使用 pandas.read_csv() 方法读取数据集。 df.head() 方法返回数据集的前 5 行。
Python3
# import packages
import pandas as pd
import numpy as np
# reading csv file as pandas dataframe
data = pd.read_csv('iris.csv')
data.head()
Python3
df = data['species'].value_counts()
print(df)
Python3
# 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
Python3
# 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
Python3
# 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
输出:
现在让我们找到数据集物种列的单向频率表。
Python3
df = data['species'].value_counts()
print(df)
输出:
setosa 50
virginica 50
versicolor 50
Name: species, dtype: int64
方法2:使用pandas.crosstab()方法的单向频率表
在这里,我们将使用 crosstab() 方法来获取频率。
Syntax: pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name=’All’, dropna=True, normalize=False)
Parameters:
- index: array or series which contain values to group by in the rows.
- columns: array or series which contain values to group by in the columns.it’s name we give to the column we find frequency
- values : An array of numbers that will be aggregated based on the factors.
在下面的代码中,我们使用交叉表函数,我们将物种列作为索引,将“no_of_species”作为频率列的名称。
Python3
# 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。
如果我们希望频率表成比例,那么我们必须将每个单独的比例除以总数的总和。
Python3
# 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% 是 setosa 等。
方法3:使用pandas.crosstab()方法的双向频率表
双向频率表是我们为数据集中的两个不同特征创建频率表的地方。要下载并查看此示例中使用的 CSV 文件,请单击此处。在下面的示例中,我们为数据集的船舶模式和分段列创建了一个双向频率表。
Python3
# 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 个家庭办公细分市场,依此类推。