Использование функции bin в кросс-таблице - PullRequest
1 голос
/ 24 марта 2020
labs = ['small','medium','big','large']
df['size'] = pd.qcut(df.volume,4,labels=labs)
pd.crosstab(df.size,df.cut,margins=True,normalize='columns')
#cut and volume are columns/features of df Dataframe

Выше приведен фрагмент, который я пытался выполнить. Это вывод, который я получил

cut     Fair    Good    Ideal   Premium     Very Good   All
row_0                       
539430  1.0     1.0     1.0     1.0     1.0     1.0

Но я ожидал ['small', 'medium', 'big', 'large'] как индексы.
Как я могу получить их как индексы?
Я также пытался изменить тип df.size из категории в строку. Не работает

1 Ответ

1 голос
/ 24 марта 2020

Я думаю, что вам нужны столбцы подкачки, также лучше использовать [] вместо точечной нотации, если имена столбцов похожи на методы в pandas как DataFrame.size:

df = pd.DataFrame({'cut':['Fair', 'Good'] * 3, 'volume':[1, 5, 10, 29, 30, 2]})

labs = ['small','medium','big','large']
df['size'] = pd.qcut(df.volume,4,labels=labs)

#there is 18 values in df
print (df.size)
18    

df1 = pd.crosstab(df.size,df.cut,margins=True,normalize='columns')
print (df1)
cut    Fair  Good  All
row_0                 
18      1.0   1.0  1.0

df2 = pd.crosstab(df['cut'], df['size'],margins=True,normalize='columns')
print (df2)
size  small  medium  big  large  All
cut                                 
Fair    0.5     0.0  1.0    0.5  0.5
Good    0.5     1.0  0.0    0.5  0.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...