Удаление NaNs из выбранных данных в пандах - PullRequest
0 голосов
/ 25 декабря 2018

Продолжая мой предыдущий вопрос ссылка (все объясняется там), я получил массив.Однако я не знаю, как использовать этот массив, но это еще один вопрос.Суть этого вопроса в том, что в столбце 63 x 2, который я создал, есть значения NaN, и я хочу, чтобы строки со значениями NaN были удалены, чтобы я мог использовать данные (как только я задам другой вопрос о том, как составлять график и экспортировать как x , y массива)

Вот что у меня есть.Этот код работает.

import pandas as pd

df = pd.read_csv("~/Truncated raw data hcl.csv")

data1 = [df.iloc[:, [0, 1]]]

Образец файла .csv находится в ссылке.

Я попытался ввести

data1.dropna()

, но это не удалосьработа.

Я хочу, чтобы значения / строки NaN отбрасывались, чтобы я остался с массивом 28 x 2.(Я использую первый столбец с фактическими значениями в качестве примера).

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Однако ответ уже дан, хотя я хотел бы высказать некоторые соображения по этому поводу.

Импортирование вашего фрейма данных с использованием набора данных из вашего предыдущего поста, который вы предоставили:

>>> import pandas as pd
>>> df = pd.read_csv("so.csv")
>>> df
    time  1mnaoh trial 1  1mnaoh trial 2  1mnaoh trial 3       ...        5mnaoh trial 1  5mnaoh trial 2  5mnaoh trial 3  5mnaoh trial 4
0    0.0            23.2            23.1            23.1       ...                  23.3            24.3            24.1            24.1
1    0.5            23.2            23.1            23.1       ...                  23.4            24.3            24.1            24.1
2    1.0            23.2            23.1            23.1       ...                  23.5            24.3            24.1            24.1
3    1.5            23.2            23.1            23.1       ...                  23.6            24.3            24.1            24.1
4    2.0            23.3            23.2            23.2       ...                  23.7            24.5            24.7            25.1
5    2.5            24.0            23.5            23.5       ...                  23.8            27.2            26.7            28.1
6    3.0            25.4            24.4            24.1       ...                  23.9            31.4            29.8            31.3
7    3.5            26.9            25.5            25.1       ...                  23.9            35.1            33.2            34.4
8    4.0            27.8            26.5            26.2       ...                  24.0            37.7            35.9            36.8
9    4.5            28.5            27.3            27.0       ...                  24.0            39.7            38.0            38.7
10   5.0            28.9            27.9            27.7       ...                  24.0            40.9            39.6            40.2
11   5.5            29.2            28.2            28.3       ...                  24.0            41.9            40.7            41.0
12   6.0            29.4            28.5            28.6       ...                  24.1            42.5            41.6            41.2
13   6.5            29.5            28.8            28.9       ...                  24.1            43.1            42.3            41.7
14   7.0            29.6            29.0            29.1       ...                  24.1            43.4            42.8            42.3
15   7.5            29.7            29.2            29.2       ...                  24.0            43.7            43.1            42.9
16   8.0            29.8            29.3            29.3       ...                  24.2            43.8            43.3            43.3
17   8.5            29.8            29.4            29.4       ...                  27.0            43.9            43.5            43.6
18   9.0            29.9            29.5            29.5       ...                  30.8            44.0            43.6            43.8
19   9.5            29.9            29.6            29.5       ...                  33.9            44.0            43.7            44.0
20  10.0            30.0            29.7            29.6       ...                  36.2            44.0            43.7            44.1
21  10.5            30.0            29.7            29.6       ...                  37.9            44.0            43.8            44.2
22  11.0            30.0            29.7            29.6       ...                  39.3             NaN            43.8            44.3
23  11.5            30.0            29.8            29.7       ...                  40.2             NaN            43.8            44.3
24  12.0            30.0            29.8            29.7       ...                  40.9             NaN            43.9            44.3
25  12.5            30.1            29.8            29.7       ...                  41.4             NaN            43.9            44.3
26  13.0            30.1            29.8            29.8       ...                  41.8             NaN            43.9            44.4
27  13.5            30.1            29.9            29.8       ...                  42.0             NaN            43.9            44.4
28  14.0            30.1            29.9            29.8       ...                  42.1             NaN             NaN            44.4
29  14.5             NaN            29.9            29.8       ...                  42.3             NaN             NaN            44.4
30  15.0             NaN            29.9             NaN       ...                  42.4             NaN             NaN             NaN
31  15.5             NaN             NaN             NaN       ...                  42.4             NaN             NaN             NaN

Тем не менее, хорошо предварительно очистить данные, а затем обработать их так, как вам нужно, поэтому удаление значений NA во время самого импорта будет весьма полезно.

>>> df = pd.read_csv("so.csv").dropna()    <-- dropping the NA here itself
>>> df
    time  1mnaoh trial 1  1mnaoh trial 2  1mnaoh trial 3       ...        5mnaoh trial 1  5mnaoh trial 2  5mnaoh trial 3  5mnaoh trial 4
0    0.0            23.2            23.1            23.1       ...                  23.3            24.3            24.1            24.1
1    0.5            23.2            23.1            23.1       ...                  23.4            24.3            24.1            24.1
2    1.0            23.2            23.1            23.1       ...                  23.5            24.3            24.1            24.1
3    1.5            23.2            23.1            23.1       ...                  23.6            24.3            24.1            24.1
4    2.0            23.3            23.2            23.2       ...                  23.7            24.5            24.7            25.1
5    2.5            24.0            23.5            23.5       ...                  23.8            27.2            26.7            28.1
6    3.0            25.4            24.4            24.1       ...                  23.9            31.4            29.8            31.3
7    3.5            26.9            25.5            25.1       ...                  23.9            35.1            33.2            34.4
8    4.0            27.8            26.5            26.2       ...                  24.0            37.7            35.9            36.8
9    4.5            28.5            27.3            27.0       ...                  24.0            39.7            38.0            38.7
10   5.0            28.9            27.9            27.7       ...                  24.0            40.9            39.6            40.2
11   5.5            29.2            28.2            28.3       ...                  24.0            41.9            40.7            41.0
12   6.0            29.4            28.5            28.6       ...                  24.1            42.5            41.6            41.2
13   6.5            29.5            28.8            28.9       ...                  24.1            43.1            42.3            41.7
14   7.0            29.6            29.0            29.1       ...                  24.1            43.4            42.8            42.3
15   7.5            29.7            29.2            29.2       ...                  24.0            43.7            43.1            42.9
16   8.0            29.8            29.3            29.3       ...                  24.2            43.8            43.3            43.3
17   8.5            29.8            29.4            29.4       ...                  27.0            43.9            43.5            43.6
18   9.0            29.9            29.5            29.5       ...                  30.8            44.0            43.6            43.8
19   9.5            29.9            29.6            29.5       ...                  33.9            44.0            43.7            44.0
20  10.0            30.0            29.7            29.6       ...                  36.2            44.0            43.7            44.1
21  10.5            30.0            29.7            29.6       ...                  37.9            44.0            43.8            44.2

и, наконец, приведение вашего фрейма данных к вашему желанию:

>>> df = [df.iloc[:, [0, 1]]]
# new_df = [df.iloc[:, [0, 1]]]  <-- if you don't want to alter actual dataFrame
>>> df
[    time  1mnaoh trial 1
0    0.0            23.2
1    0.5            23.2
2    1.0            23.2
3    1.5            23.2
4    2.0            23.3
5    2.5            24.0
6    3.0            25.4
7    3.5            26.9
8    4.0            27.8
9    4.5            28.5
10   5.0            28.9
11   5.5            29.2
12   6.0            29.4
13   6.5            29.5
14   7.0            29.6
15   7.5            29.7
16   8.0            29.8
17   8.5            29.8
18   9.0            29.9
19   9.5            29.9
20  10.0            30.0
21  10.5            30.0]

Лучшее решение:

Глядя на конечный результат, я вижу, что вы просто касаетесь конкретных столбцов, которые 'time' & '1mnaoh trial 1', следовательно, идеалистическим будет использование usecole опция, которая уменьшит вашу память для поиска по данным, потому что вы выбрали только те столбцы, которые полезны для вас, а затем используете dropna(), который даст вам желаемый результат, я верю.

>>> df = pd.read_csv("so.csv", usecols=['time', '1mnaoh trial 1']).dropna()
>>> df
    time  1mnaoh trial 1
0    0.0            23.2
1    0.5            23.2
2    1.0            23.2
3    1.5            23.2
4    2.0            23.3
5    2.5            24.0
6    3.0            25.4
7    3.5            26.9
8    4.0            27.8
9    4.5            28.5
10   5.0            28.9
11   5.5            29.2
12   6.0            29.4
13   6.5            29.5
14   7.0            29.6
15   7.5            29.7
16   8.0            29.8
17   8.5            29.8
18   9.0            29.9
19   9.5            29.9
20  10.0            30.0
21  10.5            30.0
22  11.0            30.0
23  11.5            30.0
24  12.0            30.0
25  12.5            30.1
26  13.0            30.1
27  13.5            30.1
28  14.0            30.1
0 голосов
/ 25 декабря 2018

Попробуйте

import pandas as pd

df = pd.read_csv("~/Truncated raw data hcl.csv")

data1 = df.iloc[:, [0, 1]]
cleaned_data = data1.dropna()

Возможно, вы получили исключение типа "Список не имеет метода dropna".Это потому, что ваши data1 были не Pandas DataFrame, а List, а внутри этого списка был DataFrame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...