2016-06-02 4 views
0

내 jupyter 노트북에 데이터 프레임으로 https://figshare.com/articles/On_screen_movie_kill_counts_for_hundreds_of_films/889719의 csv "Body Count 데이터 세트"를로드했습니다.
내 작업은 영화 MPAA 등급을 예측하기 위해 선형 회귀를 수행하는 것입니다. 내가 들었던 것은, 나의 데이터 벡터 X가 Body_Count, IsAction, IsThriller 등과 같은 컬럼을 포함해야한다고 들었다.
유감스럽게도, 모든 영화 장르에 레이블이 붙어 있기 때문에 불행히도, 나는 어떻게 나의 데이터 세트로부터 그러한 통계를 얻을 수 있을까? "스릴러 | 액션 | 드라마"처럼.
어떻게 할 수 있었는지 아이디어가 있습니까?팬더의 데이터 프레임을 다른 것으로 변환

답변

1

확인합니다. 그런 다음 데이터를이 결합하여 사용 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 

index에서 FilmBody_Count을 제거하려면

df = df.reset_index() 
+0

감사합니다 사용! 내가해야 할 또 하나의 일은 바디 카운트와 장르의 데이터를 매트릭스로 만들어 일부 회귀 작업을 수행 할 수있게하는 것입니다. 그러나 시체 수가 지수 인 것처럼 보입니다. 내가 어떻게 처리 할 수 ​​있는지 알고 있니? – Kuba

+0

결과에 .reset_index()를 사용하십시오. – Stefan

+0

update with command를 참조하십시오. – Stefan

0

당신은 다양한 장르 유형에 새 열을 만들

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

을 사용할 수 있습니다 밖으로 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 
관련 문제