Профилирование данных - Как считать нули, NaNs и пустые строковые значения? - PullRequest
3 голосов
/ 28 октября 2019

Я новичок в pyspark, и у меня есть этот пример набора данных:

   Ticker_Modelo Ticker  Type   Period  Product  Geography  Source  Unit  Test
0  Model1_Index  Model1  Index  NWE     Forties  Hydrocraking  Daily  Refinery Margins  NWE  Bloomberg  None  3
1  Model2_Index  Model2  Index  NWE     Bonny Light Hydrocraking  Daily  Refinery Margins  NWE  Bloomberg  None  5
2  Model3_Index  Model3  Index  USGC    LLS FCC  Daily  Refinery Margins  USGC  Bloomberg  None  12
3  Model4_Index  Model4  Index  USGC    Maya Coking  Daily  Refinery Margins  USGC  Bloomberg  None  67
4  Model6_Index  Model6  Index  USMC    WTI FCC  Daily  Refinery Margins  USMC  Bloomberg  None  45
5  Model5_Index  Model5  Index  USMC    WCSS Coking  Daily  Refinery Margins  USMC  Bloomberg  None  22
6  Model7_Index  Model7  Index  USEC    Hibernia FCC  Daily  Refinery Margins  USEC  Bloomberg  None  
7  Model8_Index  Model8  Index  Singapore Dubai Hydrocracking  Daily  Refinery Margins  Singapore  Bloomberg  None  Null

Мне нужно выполнить профилирование данных и сохранить его в базе данных.

Я пробовал с Optimus (https://github.com/ironmussa/Optimus/) и panda_profiler (https://pandas -profiling.github.io / pandas-profiling / docs / ), но они выполняют профилированиеи дает вам HTML, и есть некоторые значения, которые мне нужны, чтобы он не вычислялся.

Мне нужно подсчитать, сколько нулей / NaNs / пустых строк в каждом столбце, и создать новую таблицу с ним.

Я использую pandas и pyspark.

Я нашел ответ, который, как я думал, мог бы помочь, Python / Pyspark - считать NULL, пусто и NaN , но когдаЯ пытаюсь применить его к одному столбцу, чтобы попытаться

data_df.filter((data_df["Ticker_Modelo"] == "") | data_df["Ticker_Modelo"].isNull() | isnan(data_df["Ticker_Modelo"])).count()

, это дает мне ошибку: AttributeError: 'Series' object has no attribute 'isNull'

И тогда я не уверен, как применить его ко всем столбцам иперенести это, чтобы получить что-то вроде этого:

               Count_nulls
Ticker_Modelo  0
Ticker         0
Type           0
Period         0
Product        0
Geography      0
Source         0
Unit           0
Test           2

1 Ответ

3 голосов
/ 28 октября 2019

вы можете сделать следующее:

сначала изменить все значения Null / None на значения Panda NaN

df.replace(['None','Null'],np.nan)

df.isnull().sum(axis=0).to_frame().rename(columns={0 : 'Count_Nulls'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...