Как подсчитать нулевые значения для каждого столбца, а также найти процент в фрейме данных pandas?

#python #pandas #dataframe

Вопрос:

Итак, у меня есть фрейм данных, который я прочитал из csv-файла и присвоил ему значение «ski_data».

Я просто немного запутался в формулировке инструкции. Там написано:

Подсчитайте (используя .sum()) количество пропущенных значений (.isnull()) в каждом столбце ski_data, а также проценты (используя .mean() вместо .sum()) и упорядочьте их с помощью значений сортировки.

Вызов pd.concat , чтобы представить их в одной таблице (фрейм данных) с полезными именами столбцов «количество» и «%»

Единственный способ, которым я мог бы это сделать, — скопировать ski_data в новый df, но проблема сейчас в том, что у меня есть новый фрейм данных, и после его переноса новый фрейм данных содержит имя каждого столбца в качестве индекса и число, соответствующее количеству нулевых значений, которые он имеет. Кроме того, я не знаю, как вычислить среднее значение так, как задается вопрос, потому что предполагается, что я могу записать все это в одну строку.

Я предполагаю, что это в значительной степени проблема синтаксиса, хотя я не смог найти ни одного полезного ресурса в Интернете. Мне было интересно, может ли кто-нибудь помочь.

Ответ №1:

Вы могли бы попробовать это:

 import pandas as pd

# Toy dataframe
ski_data = pd.DataFrame(
    {
        "A": [1, 1, 1],
        "B": [2, 2, None],
        "C": ["markers", "", "markers"],
        "D": [None, 2, None],
        "E": [4, "", 4],
    }
)

counts = ski_data.isna().sum()
print(counts.sort_values())
# Outputs
A    0      
C    0      
E    0      
B    1      
D    2

percentages = round(ski_data.isna().mean() * 100, 1)
print(percentages.sort_values())
# Outputs
A     0.0     
C     0.0     
E     0.0     
B    33.3     
D    66.7

null_values = pd.concat([counts, percentages], axis=1, keys=["count", "%"])
print(null_values)
# Outputs
   count     %
A      0   0.0
B      1  33.3
C      0   0.0
D      2  66.7
E      0   0.0