#python #pandas
Вопрос:
Питон нуб здесь. Я работаю над проектом и получаю некоторые странные результаты. Мне удалось воспроизвести результаты в небольшом примере. Я сохранил следующее в Excel в виде csv-файла:
var 1,var 2
20,a
10,a
,a
5,a
4,a
0,a
1,a
21,a
Я пытаюсь подсчитать, сколько пустых фрагментов данных (т. е. 1)
test = pd.read_csv("test.csv")
print(test[test["var 1"]==""].count())
test["var 1"].replace("", "Unknown", inplace=True)
print(test[test["var 1"]==""].count())
print(test[test["var 1"]=="Unknown"].count())
print(test[test["var 1"]== 0].count())
Результат таков:
var 1 0
var 2 0
dtype: int64
var 1 0
var 2 0
dtype: int64
var 1 0
var 2 0
dtype: int64
var 1 1
var 2 1
dtype: int64
Поэтому по какой-то причине Python не считает пустые данные «». Затем я использую следующий код для отправки данных обратно в новый csv-файл в надежде, что смогу узнать, как на них ссылаться.
csv, который я получаю, отображается как:
var 1
20.0
10.0
""
5.0
4.0
0.0
1.0
21.0
Как вы можете видеть, данные отправляются обратно как «». Я пытаюсь выполнять задачи, основанные на условии, что данные==»», но, очевидно, не могу, так как данные не хранятся как «». Кто-нибудь знает, как хранятся данные?
Мы ценим любую помощь,
C.
Комментарии:
1.Вы можете просто
print(test)
посмотреть, что используется вместо пустой строки""
во фрейме данных.2. Спасатель XD. По какой-то причине он хранится как NaN!
3. Отсутствующие данные в панд представлены
NaN
. См. раздел Работа с недостающими данными4. @Charmalade, смотрите описание
na_values
по причине: pandas.pydata.org/pandas-docs/stable/reference/api/…5.
NaN
не будет равнозначноNaN
тому, что является частью определения. Существует методisna()
, который сообщит вам, содержит ли продажа NaN или нет.df['var 1'].isna().sum()
может использоваться для «подсчета» количества истин.
Ответ №1:
Данные хранятся в виде нулевого значения или np.nan
. Смотрите выходные данные тестового фрейма данных при загрузке:
test = pd.read_csv("test.csv")
var 1 var 2
0 20.0 a
1 10.0 a
2 NaN a
3 5.0 a
4 4.0 a
5 0.0 a
6 1.0 a
7 21.0 a
Когда вы это сделаете .to_csv()
, нулевые значения станут «» в Excel
Поэтому ваш код должен быть:
test = pd.read_csv("test.csv")
print(test[test["var 1"].isna()].count())
test["var 1"].replace(np.nan, "Unknown", inplace=True)
print(test[test["var 1"].isna()].count())
print(test[test["var 1"]=="Unknown"].count())
print(test[test["var 1"]== 0].count())
var 1 0
var 2 1
dtype: int64
var 1 0
var 2 0
dtype: int64
var 1 1
var 2 1
dtype: int64
var 1 1
var 2 1
dtype: int64
Комментарии:
1. @Charmalade не могли бы вы помочь озвучить мой ответ, пожалуйста? 🙂