2016-06-02 1 views
0

Я загрузил csv «Набор данных тела» от https://figshare.com/articles/On_screen_movie_kill_counts_for_hundreds_of_films/889719 как блок данных к моему ноутбуку jupyter.
Моя задача - сделать линейную регрессию, чтобы прогнозировать рейтинг MPAA. Я слышал, что мой вектор данных X должен содержать столбцы: Body_Count, IsAction, IsThriller и т. Д.
К сожалению, я понятия не имею, как я могу получить эти статистические данные из моего набора данных, поскольку каждый жанр фильма помечен как «триллер | действие | драма».
Есть ли у вас идеи, как это можно сделать?Преобразование данных в пандах в другой

ответ

1

Вы можете использовать

genres = df.Genre.str.split('|', expand=True) 

создавать новые столбцы для различных жанровых типов. Затем объединить это с вашими данными и использовать pd.get_dummies() с .sum():

df = pd.concat([df.drop('Genre', axis=1), genres], axis=1) 
df = df.set_index(['Film', 'Year', 'Body_Count', 'MPAA_Rating', 'Director', 'Length_Minutes', 'IMDB_Rating']).stack().reset_index(-1, drop=True) 
df.columns = ['Genre'] 

df = pd.get_dummies(df).groupby(level=['Film', 'Body_Count']).sum() 
df.head() 

           Fantasy ...  Horror Music Musical \ 
Film     Body_Count   ...        
24 Hour Party People 7    0.0 ...  0.0 1.0  0.0 
28 Days Later  53    0.0 ...  1.0 0.0  0.0 
28 Weeks Later  212    0.0 ...  1.0 0.0  0.0 
30 Days of Night  67    0.0 ...  1.0 0.0  0.0 
300     600    1.0 ...  0.0 0.0  0.0 

           Mystery Romance Sci-Fi Sport Thriller \ 
Film     Body_Count            
24 Hour Party People 7    0.0  0.0  0.0 0.0  0.0 
28 Days Later  53    0.0  0.0  1.0 0.0  1.0 
28 Weeks Later  212    0.0  0.0  1.0 0.0  1.0 
30 Days of Night  67    0.0  0.0  0.0 0.0  1.0 
300     600    0.0  0.0  0.0 0.0  0.0 

           War Western 
Film     Body_Count     
24 Hour Party People 7   0.0  0.0 
28 Days Later  53   0.0  0.0 
28 Weeks Later  212   0.0  0.0 
30 Days of Night  67   0.0  0.0 
300     600   1.0  0.0 

Чтобы удалить Film и Body_Count из index, используйте

df = df.reset_index() 
+0

Спасибо! Еще одна вещь, которую мне нужно сделать, - сделать данные из подсчета и жанров тела в матрицу, поэтому я могу выполнить некоторые задачи регрессии. Но подсчет тела кажется индексом. Вы знаете, как я могу справиться с этим? – Kuba

+0

Используйте .reset_index() для результата. – Stefan

+0

См. Обновление с помощью команды. – Stefan

0

Заканчивать pandas.get_dummies

df = pd.DataFrame({'genre': ['action', 'thriller', 'drama'], 'kills':[50,100,150]}) 
print(df) 
dummies = pd.get_dummies(df['genre']) 
df = pd.concat([df,dummies], axis=1) 
df = df.drop('genre',1) 
print(df) 

## -- End pasted text -- 
     genre kills 
0 action  50 
1 thriller 100 
2  drama 150 
    kills action drama thriller 
0  50  1.0 0.0  0.0 
1 100  0.0 0.0  1.0 
2 150  0.0 1.0  0.0 
Смежные вопросы