2015-11-21 2 views
0

Я пытаюсь решить одну из домашних заданий coursera для начинающих.rounding series of data data frame

Я прочитал данные и попытался преобразовать их, как показано на рисунке ниже. Я ищу распределение частот рассматриваемых переменных, и по этой причине я пытаюсь округлить значения. Я попробовал несколько методов, но ничего не дают мне то, что я ожидал (см ниже, пожалуйста) ..

import pandas as pd 
import numpy as np 
# loading the database file 
data = pd.read_csv('gapminder-2.csv',low_memory=False) 
# number of observations (rows) 
print len(data) 
# number of variables (columns) 
print len(data.columns) 


sub1 = pd.DataFrame({'income':data['incomeperperson'].convert_objects(convert_numeric=True), 
        'alcohol':data['alcconsumption'].convert_objects(convert_numeric=True), 
        'suicide':data['suicideper100th'].convert_objects(convert_numeric=True)}) 

sub1.apply(pd.Series.round) 

income = sub1['income'].value_counts(sort=False) 
print income 

Однако я получил

285.224449  1 
2712.517199  1 
21943.339898 1 
1036.830725  1 
557.947513  1 

Что я ожидаю:

285 1 
2712 1 
21943 1 
1036 1 
557 1 
+0

'sub1.round()' должен делать - требуется pandas 0.17.x, хотя. – cel

ответ

0

Вы можете Внедрение Series.round()

ser = pd.Series([1.1,2.1,3.1,5.1]) 

print(ser) 

0 1.1 
1 2.1 
2 3.1 
3 5.1 
dtype: float64 

Здесь вы можете использовать .round(), по умолчанию установлено значение 0 для каждого документа.

print(ser.round()) 

0 1 
1 2 
2 3 
3 5 
dtype: float64 

Для того, чтобы сохранить изменения, необходимо его перевести в ser=ser.round().