📜  如何在Python中创建频率表?

📅  最后修改于: 2022-05-13 01:54:36.389000             🧑  作者: Mango

如何在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() 方法来获取频率。

在下面的代码中,我们使用交叉表函数,我们将物种列作为索引,将“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 个家庭办公细分市场,依此类推。