Pandas без изменения dtype при использовании description () - PullRequest
0 голосов
/ 19 июня 2020

Вероятно, это связано с моим непониманием программирования.

Если я знаю:

dict = {'A':[10.0, 9.10, 8.93, 9.5], 
        'B':[3.0, 7.45, 5.6, 10.3], 
        'C':[5.32, 4.30, 8.0, 9.8]} 

df = pd.DataFrame(dict)
df['A'].describe()

Out:
count     4.000000
mean      9.382500
std       0.475981
min       8.930000
25%       9.057500
50%       9.300000
75%       9.625000
max      10.000000
Name: A, dtype: float64

Если я попытаюсь перейти на целочисленный тип

df['A'] = df['A'].round(0).astype('int32')
df['A'].describe()

Out:
count     4.00000
mean      9.50000
std       0.57735
min       9.00000
25%       9.00000
50%       9.50000
75%      10.00000
max      10.00000
Name: A, dtype: float64

Похоже, ничего не изменилось. Однако:

df['A'].describe

Out:
<bound method NDFrame.describe of 
0    10
1     9
2     9
3    10
Name: A, dtype: int32>

Последний результат можно подтвердить с помощью df.dtypes. Что здесь происходит?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 19 июня 2020

describe - это метод объекта DataFrame. Чтобы вызвать метод, вы должны использовать скобки. Без скобок он просто дает вам сам объект метода, а не результат.

Кроме того, если вы хотите преобразовать раздел описания в формат int, вы должны написать:

df['A'] = df['A']
df['A'].describe().astype(int)

result:
count     4
mean      9
std       0
min       8
25%       9
50%       9
75%       9
max      10
Name: A, dtype: int64
1 голос
/ 19 июня 2020
Метод

describe() предназначен в первую очередь для генерации описательной статистической информации. вы можете указать описать метод do c

Чтобы проверить тип данных, вы должны использовать dtypes.

Когда вы используете метод describe, он не будет вернуть как серию или фрейм данных. Это просто тип object, который содержит некоторые данные. Для получения данных следует использовать ().

enter image description here

...