#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