Сравнение строк, усреднение столбцов и сброс NaN в Пандах? - PullRequest
0 голосов
/ 26 ноября 2018

ОБНОВЛЕНО

Задача 1 : у меня есть набор данных, где много значений NaN.Использование main.loc[main.isna().sum(axis=1) >= 2] выходов для:

  ID:  GNDR  COUNTRY    ...         BIKE      CAR        PBLC        
    1     0     NaN     ...          NaN      NaN         NaN          
    1     0     NaN     ...          NaN      NaN         NaN
    16    1     UK      ...          123       0         10232

Конечно, строки 0 и 1 должны быть удалены?

Проблема 2 : Например, если мой идентификатор больше 1, как показано выше, это означает, что этот человек ввел данные 16 раз.Таким образом, я хочу усреднить это так, чтобы люди, которые вводили данные только один раз, позже не показывали выбросы для моего персептрона.Я думал об итеративном усреднении всех строк с идентификатором больше 1 при загрузке данных в мой DataFrame.

КОД ОБРАЗЦА :
df_2 = pandas.read_csv('logs.csv', names=colnames_df_2, skiprows=[0]) df_2['ID']=df_2['ID'].apply(str)

main = df_1.merge(df_2, how='left', on='msno') main.loc[main.isna().sum(axis=1) >= 2] print(main)

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Для задачи-1 Только примерный набор данных для отображения ..

>>> df
     A    B    C
0  foo    2    3
1  foo  NaN  NaN
2  foo    1    4
3  bar  NaN  NaN
4  foo  NaN  NaN

df.dropna(thresh=2) выполняет итерацию по всем строкам и сохраняет каждую строку, у которой есть как минимум 2 не-naзначение.Все строки имеют как минимум два значения не-n, поэтому они не удаляются.

>>> df.dropna(thresh=2)
     A  B  C
0  foo  2  3
2  foo  1  4

Значения, где количество NaN превышает 2:

>>> df.loc[df.isna().sum(axis=1) >= 2]
     A    B    C
0  foo  NaN  NaN
2  foo  NaN  NaN
4  foo  NaN  NaN
5  NaN  NaN  NaN

Чтобы получить среднее значение (), вы можете попробовать:

>>> df.B.ge(str(2))
0     True
1    False
2    False
3    False
4    False
Name: B, dtype: bool
>>>
>>>
>>> df[df.B.ge(str(2))]
     A  B  C
0  foo  2  3
>>> df[df.B.ge(str(2))]['C'].mean()
     3.0
0 голосов
/ 26 ноября 2018

Для problem-1

thresh Параметр означает:

Требуется много значений, отличных от NA.

Итак, если вы получаете обе строки, это означает, что в кадре данных НЕТ ненулевых значений.

Я попытался с вашим df ниже, и он работает.

In [527]: df
Out[527]: 
   ID  GNDR  COUNTRY  BIKE  CAR  PBLC
0   1     0      NaN   NaN  NaN   NaN
1   1     0      NaN   NaN  NaN   NaN

In [528]: df = df.dropna()
Out[528]: 
Empty DataFrame
Columns: [ID, GNDR, COUNTRY, BIKE, CAR, PBLC]
Index: []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...