如何计算熊猫数据框列的不同值?
让我们看看如何计算熊猫数据帧列的不同值?
考虑下面给出的表格结构,它必须被创建为数据帧。栏目为身高、体重、年龄。8 名学生的记录形成一排排。
第一步是为上面的列表创建数据框。请看下面的代码片段。
蟒蛇 3
# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# show the Dataframe
df
输出:
方法 1: 使用进行循环。
数据框已经创建,可以使用对循环进行硬编码,并计算特定列中唯一值的数量。例如,在上表中,如果希望计算高度栏中唯一值的数量。想法是使用变量 cnt 来存储计数和具有先前访问值的列表。然后,对于遍历“高度”列的循环,对于每个值,它检查在访问列表中是否已经访问过相同的值。如果以前没有访问过该值,则计数增加 1。
下面是实现:
蟒蛇 3
# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# variable to hold the count
cnt = 0
# list to hold visited values
visited = []
# loop for counting the unique
# values in height
for i in range(0, len(df['height'])):
if df['height'][i] not in visited:
visited.append(df['height'][i])
cnt += 1
print("No.of.unique values :",
cnt)
print("unique values :",
visited)
*输出:*
No.of.unique values : 5
unique values : [165, 164, 158, 167, 160]
但是,当数据框变大并包含数千行和数千列时,这种方法就不那么有效了。为了提高效率,下面列出了三种方法:
- *熊猫.独特()*
- *data frame.nuneme()*
- *Series.value_counts()*
*方法二:*采用独有的()。****
唯一方法将一维数组或序列作为输入,并返回其中唯一项的列表。返回值是一个 NumPy 数组,其中的内容基于传递的输入。如果提供索引作为输入,那么返回值也将是唯一值的索引。
*语法:*熊猫.独特(系列)
*示例:*
蟒蛇 3
# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# counting unique values
n = len(pd.unique(df['height']))
print("No.of.unique values :",
n)
*输出:*
No.of.unique values : 5
*方法三:*使用data frame.nunice()。****
*此方法返回指定轴中唯一值的计数。语法是:*
**语法:data frame.never(axis = 0/1,dropna=True/False)****
**示例:****
*蟒蛇 3*
**# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# check the values of
# each row for each column
n = df.nunique(axis=0)
print("No.of.unique values in each column :\n",
n)**
**输出:****
**No.of.unique values in each column :
height 5
weight 4
age 4
dtype: int64**
*要获取指定列中唯一值的数量:*
**语法:data frame.col_name.never()****
**示例:****
*蟒蛇 3*
**# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# count no. of unique
# values in height column
n = df.height.nunique()
print("No.of.unique values in height column :",
n)**
**输出:****
**No.of.unique values in height column : 5**
**方法三:使用series.value_counts()。**
*此方法返回指定列中所有唯一值的计数。*
**语法:series.value_counts(normalize =False,sort=True,升序= False,bins = None,dropna=True)****
**示例:****
*蟒蛇 3*
**# import library
import pandas as pd
# create a Dataframe
df = pd.DataFrame({
'height' : [165, 165, 164,
158, 167, 160,
158, 165],
'weight' : [63.5, 64, 63.5,
54, 63.5, 62,
64, 64],
'age' : [20, 22, 22,
21, 23, 22,
20, 21]},
index = ['Steve', 'Ria', 'Nivi',
'Jane', 'Kate', 'Lucy',
'Ram', 'Niki'])
# getting the list of unique values
li = list(df.height.value_counts())
# print the unique value counts
print("No.of.unique values :",
len(li))**
**输出:****
**No.of.unique values : 5**