Showing
2 changed files
with
27 additions
and
367 deletions
... | @@ -216,6 +216,7 @@ data = { | ... | @@ -216,6 +216,7 @@ data = { |
216 | # "몽타주": "", | 216 | # "몽타주": "", |
217 | # "명당": "", | 217 | # "명당": "", |
218 | } | 218 | } |
219 | +#500만 이상 + 스크린 수당 매출액 50위 이상 => 79개 영화, 730개 노드, 9348개 엣지 | ||
219 | 220 | ||
220 | def named_union(graph1, graph2): #두 그래프 합성 | 221 | def named_union(graph1, graph2): #두 그래프 합성 |
221 | A = graph1.copy() | 222 | A = graph1.copy() |
... | @@ -274,6 +275,7 @@ frequency[top[len(top) - 1]] = 1 | ... | @@ -274,6 +275,7 @@ frequency[top[len(top) - 1]] = 1 |
274 | G = Graph.Full(len(top)) | 275 | G = Graph.Full(len(top)) |
275 | G.vs["name"] = top[:] | 276 | G.vs["name"] = top[:] |
276 | G.vs["label"] = G.vs["name"][:] | 277 | G.vs["label"] = G.vs["name"][:] |
278 | +topTmp = data["명량"] | ||
277 | del data["명량"] | 279 | del data["명량"] |
278 | 280 | ||
279 | for movie in data: | 281 | for movie in data: |
... | @@ -302,6 +304,9 @@ for movie in data: | ... | @@ -302,6 +304,9 @@ for movie in data: |
302 | weight[join]["audiences"] += audiences[movie] | 304 | weight[join]["audiences"] += audiences[movie] |
303 | weight[join]["count"] += 1 | 305 | weight[join]["count"] += 1 |
304 | 306 | ||
307 | +for f in sorted(list(frequency.keys()), key=lambda x: frequency[x], reverse=True)[:10]: | ||
308 | + print(f, frequency[f]) | ||
309 | + | ||
305 | print("\n<같은 영화에 같이 출연한 빈도수>") | 310 | print("\n<같은 영화에 같이 출연한 빈도수>") |
306 | topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10] | 311 | topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10] |
307 | for t in topten: | 312 | for t in topten: |
... | @@ -343,6 +348,27 @@ egSorted = sorted(eg, reverse=True)[:10] | ... | @@ -343,6 +348,27 @@ egSorted = sorted(eg, reverse=True)[:10] |
343 | topEg = sorted(names1, key=lambda n: eg[names2.index(n)], reverse=True)[:10] | 348 | topEg = sorted(names1, key=lambda n: eg[names2.index(n)], reverse=True)[:10] |
344 | printResult(topEg, egSorted, 5, 8, 10) | 349 | printResult(topEg, egSorted, 5, 8, 10) |
345 | 350 | ||
351 | +avgOfBn = [] | ||
352 | +totalBn = 0 | ||
353 | +topActors = topTmp.split(",") | ||
354 | +for actor in topActors: | ||
355 | + i = names.index(actor) | ||
356 | + totalBn += bn[i] | ||
357 | +avgOfBn.append({"movie":"명량", "avgOfBn":totalBn / len(topActors)}) | ||
358 | + | ||
359 | +for movie in data: | ||
360 | + totalBn = 0 | ||
361 | + actors = data[movie].split(",") | ||
362 | + for actor in actors: | ||
363 | + i = names.index(actor) | ||
364 | + totalBn += bn[i] | ||
365 | + avgOfBn.append({"movie":movie, "avgOfBn":totalBn / len(actors)}) | ||
366 | + | ||
367 | +print("\n<average of betweenness>") | ||
368 | +avgOfBnSorted = sorted(avgOfBn, key=lambda n: n["avgOfBn"], reverse=True)[:10] | ||
369 | +for a in avgOfBnSorted: | ||
370 | + print(a["movie"], a["avgOfBn"]) | ||
371 | + | ||
346 | print("\n<total nodes>") | 372 | print("\n<total nodes>") |
347 | print(len(G.vs)) | 373 | print(len(G.vs)) |
348 | 374 | ||
... | @@ -362,4 +388,4 @@ out = plot(G, | ... | @@ -362,4 +388,4 @@ out = plot(G, |
362 | ) | 388 | ) |
363 | out.save("test.png") | 389 | out.save("test.png") |
364 | 390 | ||
365 | -#C:\Users\ghdms\2014104137\소스코드\movie.py | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
391 | +#C:\Users\ghdms\2014104137\소스코드\centrality.py | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
소스코드/movie.py
deleted
100644 → 0
1 | -from igraph import * | ||
2 | -import pymongo | ||
3 | - | ||
4 | -conn = pymongo.MongoClient("localhost") | ||
5 | -db = conn.test | ||
6 | -MOVIE = db.movie | ||
7 | -cur = MOVIE.find() | ||
8 | -audiences = {} | ||
9 | -salesPerScreens = [] | ||
10 | -for c in cur: | ||
11 | - audiences[c["name"]] = c["audiences"] | ||
12 | - salesPerScreens.append({"name": c["name"], "value": c["sales"] / c["screens"]}) | ||
13 | - | ||
14 | -salesPerScreensTmp = salesPerScreens[:] | ||
15 | -salesPerScreensSorted = sorted(salesPerScreensTmp, key=lambda n: salesPerScreens[salesPerScreens.index(n)]["value"], reverse=True)[:50] | ||
16 | - | ||
17 | -data = { | ||
18 | - "명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,최창균,신창수,김현태,정재우,김구택,이재구,조하석", | ||
19 | - "극한직업": "류승룡,이하늬,이동휘,공명,진선규,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석", | ||
20 | - "신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁,남일우", | ||
21 | - "국제시장": "황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,이현,김민재,태인호,황선화,엄지성,장대웅,신린아,이예은,고윤,박선웅", | ||
22 | - "베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진", | ||
23 | - "도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정,채국희,기국서,주진모", | ||
24 | - "7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수", | ||
25 | - "암살": "전지현,이정재,하정우,오달수,조진웅,이경영,최덕문,김의성,박병은,김홍파,진경,김인우,심희섭,허지원,허정도,정인겸,정규수,이환,우상전", | ||
26 | - "광해, 왕이 된 남자": "이병헌,류승룡,한효주,장광,김인권,심은경,박지아,이양희,전국향,신정근,양준모,문창길", | ||
27 | - "신과함께-인과 연": "하정우,주지훈,김향기,마동석,김동욱,임원희,남일우,도경수,이준혁,정지훈,조한철,장광,정해균", | ||
28 | - "택시운전사": "송강호,류준열,유해진,박혁권,최귀화,이정은,차순배,이봉련,류성현,허정도,신담수,엄태구,박민희,유은미,권순준,윤석호,이호철,이용이", | ||
29 | - "부산행": "공유,정유미,마동석,김수안,최우식,안소희,김의성,예수정,박명신,최귀화,정석용,장혁진", | ||
30 | - "변호인": "송강호,김영애,오달수,곽도원,임시완,송영창,정원중,조민기,이항나,이성민,차광수,한기중,심희섭,조완기,차은재", | ||
31 | - "해운대": "설경구,하지원,박중훈,엄정화,이민기,강예원,김인권,송재호,김지영,여호민,성병숙,도용구,노준호,지대한,장명갑,최재섭,천보근,김유정,김유빈,김정운", | ||
32 | - "괴물": "송강호,변희봉,박해일,배두나,고아성,오달수,박노식,고수희,윤제문,김뢰하,이재응,이동호", | ||
33 | - "왕의 남자": "감우성,이준기,유해진,정진영,강성연,장항선,정석용,이승훈", | ||
34 | - "기생충": "송강호,이선균,조여정,최우식,박소담,이정은,장혜진,박명훈,정지소,정현준", | ||
35 | - "검사외전": "황정민,강동원,이성민,박성웅,김응수,신소율,주진모,김원해,김홍파,김병옥,박종환,전배수,박지환,손종학,김종수,한재영,민무제,이호철", | ||
36 | - "엑시트": "조정석,윤아,고두심,박인환,황효은,김지영2,강기영,배유람,유수빈,정민성,박성일,신세휘,김강훈,김병순,김종구,이봉련", | ||
37 | - "설국열차": "송강호,고아성", | ||
38 | - "관상": "송강호,이정재,백윤식,조정석,이종석,김혜수,이도엽,김의성,정규수,채상우,이윤건,유상재", | ||
39 | - "해적: 바다로 간 산적": "김남길,손예진,신정근,유해진,이경영,오달수,김태우,박철민,김원해,조달환,조희봉,정성화,최진리,이이경,안내상,김경식,이대연", | ||
40 | - "수상한 그녀": "심은경,나문희,박인환,성동일,이진욱,김현숙,황정민2,김슬기,박형우,진영,한지은,정인기,장유,하연주,박혜진,홍석연,이상언,박승태,강한샘", | ||
41 | - "백두산": "이병헌,하정우,마동석,전혜진,배수지,이상원,옥자연,한수현,강신철,이경영,조한철,최광일,김시아,임형국,박주환,남성준,서현우,김민식,박지홍,김준원,남문철,박성근", | ||
42 | - "과속스캔들": "차태현,박보영,왕석현,임지규,황우슬혜,임승대,정원중,김기방,박영서", | ||
43 | - "국가대표": "하정우,성동일,김지석,김동욱,최재환,이재응,이은성,이한위,이혜숙,김지영,현쥬니,황하나", | ||
44 | - #"디워": "", #외국 배우 | ||
45 | - "공조": "현빈,유해진,김주혁,장영남,이해영,윤아,이동휘,공정환,엄효섭,신현빈,박민하,전국환,이이경,박진우,박형수", | ||
46 | - "히말라야": "황정민,정우,조성하,김인권,라미란,김원해,이해영,전배수,정규수,성병숙", | ||
47 | - "밀정": "송강호,공유,한지민,엄태구,신성록,허성태,서영주,정유안,이수광,고준,최유화,김동영,곽자형,조영규,이설구,권수현,이환,유상재,한수연,남문철,김수웅,최장원,허형규,백인권,정도원,신성일,김의건", | ||
48 | - "최종병기 활": "박해일,류승룡,김무열,문채원,이한위,김구택,이경영,박기웅,이승준,이재구,박노식,이다윗,전민서,문영동,김현태,강태영,조하석,김길동,정제우,서동구,지건우", | ||
49 | - "써니": "유호정,심은경,강소라,고수희,홍진희,김민영,김보미,이연경,남보라,민효린,박진주,박영서,김예원,천우희,정원중,김영옥,김시후,김혜옥,하승리", | ||
50 | - "1987": "김윤석,하정우,유해진,김태리,이희준,박희순,서현우,박지환,이화룡,이창훈,김수진,박경혜,현봉식,김승훈,김경덕,유승목,이용직,박지홍,김의성,최광일,김종수,김혜정,조우진,임철형,이현균", | ||
51 | - "베를린": "하정우,한석규,류승범,전지현,이경영,최무성,곽도원,김서형,배정남", | ||
52 | - "마스터": "이병헌,강동원,김우빈,엄지원,오달수,박해수,진경,김정우,우도환,배정남,조현철,정원중,주석태,유연수,이순원,정수교,허형규", | ||
53 | - "터널": "하정우,배두나,오달수,조현철,정석용,박혁권,남지현,신정근,유승목,이철민", | ||
54 | - "내부자들": "이병헌,조승우,백윤식,이경영,김홍파,배성우,조재윤,김대명,조우진,이엘,정만식,김병옥,김의성,박진우,남일우", | ||
55 | - "인천상륙작전": "이정재,이범수,진세연,정준호,박철민,김병옥,길금성,신수항,김희진,정민지,김진우,함형기,나야,이충구,성혁,고윤,장준학,진용욱,박정원,양범,이해준,윤석진,김중희,윤다영,반세정,조원희,송경철,김중기,김제열,이창세", | ||
56 | - "럭키": "유해진,이준,조윤희,임지연,조한철,김민상,차엽,김지안,성병숙,박승태,고준,이용녀,금광산,김한규,차순형,이승철,이성욱,정희태,이동용,김서현,송요셉", | ||
57 | - "은밀하게 위대하게": "김수현,박기웅,이현우,손현주,박혜숙,고창석,신정근,김성균,장광,홍경인,이채영,최우식,구승현,조용진,이연경,엄태구,리민,조영진,윤원석,박정기,고인범,김법래", | ||
58 | - "범죄도시": "마동석,윤계상,조재윤,최귀화,임형준,진선규,홍기준,허동원,하준,김성규,박지환,허성태,민경진,엄지성,김구택,박상규,유지연,배진아,윤병희,이도군", | ||
59 | - "곡성": "곽도원,황정민,천우희,김환희,허진,장소연,김도윤,손강국,박성연,전배수,정미남,최귀화", | ||
60 | - "화려한 휴가": "김상경,안성기,이요원,이준기,박철민,박원상,송재호,나문희,권태원,엄효섭,박용수,손병호,이얼", | ||
61 | - "좋은 놈, 나쁜 놈, 이상한 놈": "송강호,이병헌,정우성,윤제문,류승수,송영창,손병호,오달수,이청아", | ||
62 | - "늑대소년": "송중기,박보영,장영남,유연석,김향기,이영란,유승목,서동수,우정국,남정희,구본임,안도규,신비", | ||
63 | - "군함도": "황정민,소지섭,송중기,이정현,김수안,이경영,김민재,김중희,김인우,신승환,백승철,장성범,윤경호", | ||
64 | - "웰컴 투 동막골": "신하균,정재영,강혜정,임하룡,서재경,류덕환,정재진,이용이,박남희,조덕현,유승목,심원철,강현중,리민,고관재,권오민,홍예인", | ||
65 | - "사도": "송강호,유아인,문근영,전혜진,김해숙,박원상,진지희,박소담,서예지,이광일,이대연,강성해,최덕문,정석용,최민철,박명신,조승연,엄지성", | ||
66 | - "아저씨": "원빈,김새론,김태훈,김희원,김성오,이종필,김효서,송영창,황화순,남경읍", | ||
67 | - "미녀는 괴로워": "김아중,주진모2,김현숙,성동일,임현식,이한위,지서윤,명규,박노식,정성윤,베니", | ||
68 | - "전우치": "강동원,임수정,김윤석,유해진,송영창,주진모,김상호,선우선,공정환,권태원,이숙,박남희,이용녀,김기천", | ||
69 | - "연평해전": "김무열,진구,이현우,김지훈,장준학,주희중,이완,김하균,한이진,강한샘,김동범,이철민,박정학,천지유,이재원,김도혁,황인무,한강일,서동건,이한종,유형균,김선길,최건영,정해민,조하늘,김충길,서상원,황세정,장의수,권화운", | ||
70 | - "타짜": "조승우,김혜수,백윤식,유해진,김응수,김상호,김윤석,주진모,김경익,이수경,김정난,권태원,조상건,서동수,백도빈", | ||
71 | - "청년경찰": "박서준,강하늘,성동일,박하선,고준,이호정,조준", | ||
72 | - "숨바꼭질": "손현주,문정희,전미선,김원해,정준원,김수안,김지영3,이준혁,노수산나,이영석,이영미,성유빈,엄지성,허남일,리민,이승희,백종우,김정우,정민성,조한철,조시내", | ||
73 | - "덕혜옹주": "손예진,박해일,윤제문,라미란,정상훈,박수영,김소현,박주미,안내상,김재욱,여회현,신린아,이효제,이채은,이세나,김승훈,도용구,이승진,금새록,이황의,정세형,안상우,송서하,이중현", | ||
74 | - "더 테러 라이브": "하정우,이경영,전혜진,이다윗,김소진,김홍파,김해인,한수현,이청희,강진아,강신철,최진호,김대명", | ||
75 | - "감시자들": "설경구,정우성,한효주,김병옥,진경,이준호,손민석,이태형,강신하,이동휘,이화정,박지훈,김지훈,신성일,변요한,장원형,박지연,최원,변정현,이동진,이도윤,정재호,김준우,이현균", | ||
76 | - "검은 사제들": "김윤석,강동원,박소담,김의성,김병옥,이호재,남일우,손종학,조수향,박웅,이정열,김소숙,민진웅,유수미", | ||
77 | - "안시성": "조인성,남주혁,박성웅,배성우,엄태구,설현,박병은,오대환,정은채,유오성,성동일,정지훈,여회현,장광", | ||
78 | - "의형제": "송강호,강동원,전국환,박혁권,윤희석,최정우,정인기,조석현,차엽,권범택", | ||
79 | - "더 킹": "조인성,정우성,배성우,김아중,류준열,김의성,김민재,정성모,정은채,김소진,황승언,오대환,정인기,송영창,고아성,박정민,조우진,정원중,류태호,한수연,이주연,성동일,이열음,김규선,장명갑,송형수,남문철,남명렬,최귀화", | ||
80 | - "완득이": "김윤석,유아인,박수영,김상호,김영재,박효주,강별,김동영", | ||
81 | - "완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우", | ||
82 | - "타워": "설경구,손예진,김상경,김인권,안성기,송재호,이주실,이한위,권태원,전국향,정인기,차인표,전배수,박준혁,김성오,민영,이주하,조민아,도지한,이현조,권현상,이창용,김수진,박호영,박재웅", | ||
83 | - "투사부일체": "정준호,정웅인,김상중,정운택,강성필,최윤영,한효주,박용기,임세호,박용식,이기열,전창걸", | ||
84 | - "독전": "조진웅,류준열,김주혁,김성령,박해준,남문철,서현우,강승현,정준원,정가람,진서연,이주영,김동영,금새록", | ||
85 | - "추격자": "김윤석,하정우,서영희,박효주,김유정,최정우,정인기,구본웅,민경진", #68위. 500만 이상 | ||
86 | - # "공작": "황정민,이성민,조진웅,주지훈,김홍파,정소리,기주봉,김응수,채용,박진영,남문철,최병모,김인우,정기섭,이승준,양현민,허승,엄지만,백승익,권범택,최정인,김소진,박혜영,김지나,곽자형,조주희", | ||
87 | - # "바람과 함께 사라지다": "차태현,오지호,민효린,성동일,신정근,고창석,송종호,이채영,김길동,김향기,천보근,김구택,독고준", | ||
88 | - # #"님아, 그 강을 건너지 마오": "", #영화배우가 아님 | ||
89 | - # "봉오동 전투": "유해진,류준열,조우진,박지환,최유화,성유빈,이재인,홍상표,원풍연,양현민", | ||
90 | - "조선명탐정 : 각시투구꽃의 비밀": "김명민,한지민,오달수,최무성,우현,이재용,예수정,정인기", #salesPerScreensSorted 43위 | ||
91 | - # "군도: 민란의 시대": "하정우,강동원,조진웅,마동석,정만식,김성균,주진모,이경영,이성민,윤지혜,김재영,송영창,김병옥,임현성,강현중", | ||
92 | - # "남산의 부장들": "이병헌,이성민,곽도원,이희준,김소진,서현우,김승훈,박성근,지현준,박지일,이태형,주석태,이도국,김민상", | ||
93 | - # "범죄와의 전쟁: 나쁜놈들 전성시대": "최민식,하정우,조진웅,마동석,곽도원,김성균,송영창,김종수,권태원,김종구,김혜은,김영선", | ||
94 | - # "신세계": "이정재,최민식,황정민,박성웅,송지효,김홍파,장광,김윤성,최일화,권태원,나광훈,박로사,주진모", | ||
95 | - # "도가니": "정유미,공유,김현수,정인서,백승환,임현성,김주령,최진호,장광,전국환,엄효섭,권홍석,김지영,엄지성,남명렬,박혜진,김민상,장유", | ||
96 | - # "내 아내의 모든 것": "임수정,이선균,류승룡,이광수,김효준,이도아,김은경,염해란,이새로미,이진희,하복음", | ||
97 | - # "판도라": "김남길,김영애,문정희,정진영,이경영,강신일,김대명,유승목,김주현,박선희,공정환,주석태,송철호,김영웅,김태훈2,주진모,송영창,배강유,김세동,김한종,박대원,심성효,박팔영,최효상,권홍석,허선행,심영민,조덕현,손종학,김종구,장준녕,조한철,임승대,송영규,강석원,곽민석,정인기,백도빈,최명진,강태식,이승준,어성욱,형원,김태현,박용,이태형,강지원,오예설", | ||
98 | - # "나쁜 녀석들: 더 무비": "마동석,김상중,김아중,장기용,박효준,김인우,이재윤,박원상,조영진,박형수,박상욱,한정현,전익령,김형묵,윤병희,지승현,강영묵", | ||
99 | - "가문의 위기(가문의 영광2)": "신현준,김수미,김원희,정준하,임형준,공형진,탁재훈,정호빈,김해곤", #salesPerScreensSorted 21위 | ||
100 | - # "연가시": "김명민,문정희,김동완,이하늬,엄지성,염현서,강신일,송영창,조덕현,최정우,전국환,이형철,정인기,김세동,조한철,민경진", | ||
101 | - # "강철비": "정우성,곽도원,김갑수,김의성,이경영,조우진,정원중,김명곤,박은혜,장현성,박선영,안미나,원진아,이재용,이윤건,김형종", | ||
102 | - # "강철중: 공공의 적 1-1": "설경구,정재영,문성근,강신일,유해진,이문식,김남길,연제욱,정원중", | ||
103 | - # "아가씨": "김민희,김태리,하정우,조진웅,김해숙,이용녀,이동휘,곽은진,조은형", | ||
104 | - "말아톤": "조승우,김미숙,이기영,백성현,안내상", #salesPerScreensSorted 5위 | ||
105 | - # "용의자": "공유,박희순,조성하,유다인,김성균,조재윤,김민재,김의성,원풍연,원진,송재림,최종률,남보라,기주봉,조석현,이용직,최태환,박지일", | ||
106 | - # "건축학개론": "엄태웅,한가인,이제훈,배수지,조정석,유연석,조현철,김의성,이승호,박수영,김동주", | ||
107 | - "댄싱퀸": "황정민,엄정화,정성화,정규수,오나라,한수아,이아린,박정민,박사랑,여무영,성병숙,라미란,이대연,이한위,최우리,권병길,서동원", #salesPerScreensSorted 46위 | ||
108 | - "7급 공무원": "김하늘,강지환,류승룡,유승목,강신일,장남열,김형범,장영남,김정팔,김형종,박성민", #salesPerScreensSorted 45위 | ||
109 | - "우리 생애 최고의 순간": "문소리,김정은,엄태웅,김지영2,조은지,차민지,남궁,이미도,조영진,이봉규,정석용,하정우,정세형,김강민,김종언,최욱", #salesPerScreensSorted 34위 | ||
110 | - # "꾼": "현빈,유지태,배성우,박성웅,나나,안세하,최덕문,허성태,최일화,김태훈3", | ||
111 | - # "타짜-신의 손": "최승현,신세경,곽도원,유해진,김윤석,이하늬,김인권,이경영,고수희,오정세,박효주,이준혁,이동휘,김원해,고준,조경현,박수영,김민상,손상경,임정은,정윤석", #94위, 400만 이상 | ||
112 | - # "박수건달": "박신양,김정태,엄지원,정혜영,김성균,최일화,최지호,김형범,박정자,윤송이", | ||
113 | - # "조선명탐정 : 사라진 놉의 딸": "김명민,오달수,이연희,조관우,정원중,이채은,황채원,최무성,우현,황정민2", | ||
114 | - # "역린": "현빈,정재영,조정석,한지민,조재현,박성웅,김성령,정은채,송영창,이도경,김민재,김대명,김주완,유은미,천보근,구승현,이재희,문지현,김창회,서이숙,성유빈,전국향", | ||
115 | - # "남한산성": "이병헌,김윤석,박해일,고수,박희순,송영창,조우진,이다윗,허성태,김법래,조아인,진선규,유순웅,최종률,문창길,김서현,김중기,윤세웅,신기준,곽자형,박지일", | ||
116 | - # "암수살인": "김윤석,주지훈,진선규,정종준,허진,김중기,김영웅,전국환,김종수,배해선,이봉련,정기섭,원현준,권소현", | ||
117 | - # "국가부도의 날": "김혜수,유아인,허준호,조우진,김홍파,엄효섭,송영창,권해효,조한철,류덕환,박진주,장성범,전배수,염혜란,김형묵,동하,김민상,정규수", #100위 | ||
118 | - # "쌍화점": "조인성,주진모2,송지효,임주환,여욱환,심지호,송중기,장지원,김춘기,이종구,권태원,도용구,고인범,함건수,노민우,도예성,박종수", | ||
119 | - # "신기전": "정재영,한은정,허준호,안성기,정성모,김명수,이도경,인교진,류현경,서주성,조원희,오순태,신정근,이승근,이창직,최승일,강지은,방수형", | ||
120 | - # "82년생 김지영": "정유미,공유,김미경,공민정,박성연,이봉련,김성철,이얼,손성찬,강애심,김정영,류아영", | ||
121 | - # "귀향": "손숙,강하나,최리,임성철,정무성,황화순,류신,서미지,정인기,오지혜,김민수,이승현,김시은,박근수,홍세나,남상지,차순형,박충환,지윤재,노지용,윤정로", | ||
122 | - # "신의 한 수": "정우성,안성기,이범수,김인권,이시영,안길강,이도경,최진혁,정해균,안서현,김명수,황춘하,이일섭,김세동,김주명,이용녀,유순철,홍성덕,박지훈,윤희철,김소진,유재상", | ||
123 | - # "태풍": "이정재,이미연,장동건,김갑수,허욱,선호진,강신성일,박찬영,김란흔,민지환", | ||
124 | - # "부러진 화살": "안성기,박원상,나영희,김지호,문성근,이경영,진경,박수일,김준배,김응수", | ||
125 | - # "끝까지 간다": "이선균,조진웅,신정근,정만식,신동미,김동영,박보검,주석태,허정은,이재원", | ||
126 | - # "스파이": "설경구,문소리,고창석,한예리,정인기,라미란,송재호,김지영", | ||
127 | - # "그것만이 내 세상": "이병헌,윤여정,박정민,문숙,최리,황석정,백현진,조관우,박지훈,김서원,홍석연", | ||
128 | - # "돈": "류준열,유지태,조우진,손종학,원진아,정만식,임세미,김민재,김재영,김종수,진선규", | ||
129 | - # "악인전": "마동석,김무열,김성규,유승목,최민철,김윤성,허동원,김승현,오희준,문동혁", | ||
130 | - # "이끼": "정재영,박해일,유준상,유선,허준호,유해진,김상호,김준배,강신일,임승대,정규수,이철민,윤아름,오순태", | ||
131 | - # "한반도": "조재현,안성기,차인표,문성근,강신일,김상중,강수연,독고영재,백일섭,최일화,박용수,이도련,이한위,박길수", | ||
132 | - # "포화속으로": "차승원,권상우,최승현,김승우,문재원,김혜성,신현탁,구성환,김동범,김윤성,탁트인,윤승훈,김호원,김한준,조중휘,박태주,조원희,라경덕,황준영,김태환", | ||
133 | - # "시동": "마동석,박정민,정해인,염정아,최성은,김종수,윤경호,김경덕", | ||
134 | - # "아이 캔 스피크": "나문희,이제훈,박철민,염혜란,이상희,이지훈,정연주,김소진,김일웅,성유빈,최수인,이재인", | ||
135 | - # "마녀": "김다미,조민수,박희순,최우식,고민시,최정우,오미희,다은,김병옥,이주원,김하나,이시우", | ||
136 | - # "탐정: 리턴즈": "권상우,성동일,이광수,서영희,이일화,남명렬,손담비,최덕문,최성원,박성일,오희준,정연주,김성규,김중기,이청희,김용준,박성연,홍서백,홍은택", | ||
137 | - "공공의 적 2": "설경구,정준호,강신일,박근형,변희봉,임승대,박상욱,엄태웅,정규수", #salesPerScreensSorted 32위 | ||
138 | - # "퀵": "고창석,강예원,이민기,김인권,주진모,김병철,김은옥,유승목,윤제문,마동석,송재호,전국환,오정세", | ||
139 | - "친절한 금자씨": "이영애,최민식,권예영,김시후,남일우,김병옥,오달수,이승신,김부선,라미란", #salesPerScreensSorted 50위 | ||
140 | - # "감기": "장혁,수애,박민하,유해진,이희준,김기현,이상엽,박효주,박정민,최병모,김문수,장경업", | ||
141 | - # "스물": "김우빈,이준호,강하늘,정소민,이유비,민효린,정주연", | ||
142 | - # "거북이 달린다": "김윤석,정경호,견미리,선우선,김지나,신정근,최권,차은재,주진모,이무생,유하복,임형택,김희원", | ||
143 | - # "헬로우 고스트": "차태현,강예원,이문수,고창석,장영남,천보근,공호석,정규수,김진성,구승현", | ||
144 | - "하모니": "김윤진,나문희,강예원,이다희,장영남,박준면,정수영,이태경,문경민,도용구,지성원,차진혁,박혜진", #salesPerScreensSorted 44위 | ||
145 | - # "오싹한 연애": "손예진,이민기,박철민,김현숙,이미도,신성훈,윤지민,황승언,이현진", #128위. 300만 이상 | ||
146 | - # "방자전": "", | ||
147 | - # "형": "", | ||
148 | - # "마더": "", | ||
149 | - # "그놈 목소리": "", | ||
150 | - # "친구 2": "", | ||
151 | - # "식객": "", | ||
152 | - # "26년": "", | ||
153 | - # "고지전": "", | ||
154 | - # "워낭소리": "", #salesPerScreensSorted 30위 | ||
155 | - # "프리즌": "", | ||
156 | - # "가장 보통의 연애": "", | ||
157 | - # "말모이": "", | ||
158 | - # "극비수사": "", | ||
159 | - # "표적": "", | ||
160 | - # "너의 결혼식": "", | ||
161 | - # "내가 살인범이다": "", | ||
162 | - # "부당거래": "", | ||
163 | - # "소원": "", | ||
164 | - "너는 내 운명": "전도연,황정민,나문희,정유석,서주희,윤제문,임종윤,김상호,고수희,김부선,김광규", #salesPerScreensSorted 42위 | ||
165 | - # "시라노; 연애조작단": "", | ||
166 | - # "곤지암": "", | ||
167 | - # "살인자의 기억법": "", | ||
168 | - "마파도": "이정진,이문식,여운계,김수미,김을동,김형자,길해연,오달수,서영희", #salesPerScreensSorted 13위 | ||
169 | - # "후궁 : 제왕의 첩": "", | ||
170 | - # "탐정 : 더 비기닝": "", | ||
171 | - # "지금 만나러 갑니다": "", | ||
172 | - # "가문의 부활 - 가문의 영광3": "", | ||
173 | - # "위험한 상견례": "", | ||
174 | - # "아수라": "", | ||
175 | - # "보안관": "", | ||
176 | - # "기술자들": "", | ||
177 | - # "굿모닝 프레지던트": "", | ||
178 | - "태극기 휘날리며": "장동건,원빈,이은주,공형진,장민호,이영란", #salesPerScreensSorted 2위 | ||
179 | - # "라스트 갓파더": "", | ||
180 | - # "1번가의 기적": "", | ||
181 | - # "증인": "", | ||
182 | - # "목격자": "", | ||
183 | - # "조작된 도시": "", | ||
184 | - # "블랙머니": "", | ||
185 | - # "반창꼬": "", | ||
186 | - # "우리들의 행복한 시간": "", | ||
187 | - # "조선명탐정: 흡혈괴마의 비밀": "", | ||
188 | - # "화차": "", | ||
189 | - # "이웃사람": "", | ||
190 | - # "재심": "", | ||
191 | - # "히트맨": "", | ||
192 | - # "사바하": "", | ||
193 | - # "화이: 괴물을 삼킨 아이": "", | ||
194 | - # "의뢰인": "", | ||
195 | - # "가문의 영광4 - 가문의 수난": "", | ||
196 | - # "블라인드": "", | ||
197 | - # "박열": "", | ||
198 | - # "미인도": "", | ||
199 | - # "음란서생": "", | ||
200 | - # "내 생애 가장 아름다운 일주일": "", | ||
201 | - # "하녀": "", | ||
202 | - # "황해": "", | ||
203 | - # "7광구": "", | ||
204 | - # "타짜: 원 아이드 잭": "", | ||
205 | - # "박쥐": "", | ||
206 | - # "마당을 나온 암탉": "", | ||
207 | - # "악의 연대기": "", | ||
208 | - # "강남 1970": "", | ||
209 | - # "신의 한 수: 귀수편": "", | ||
210 | - # "마이 웨이": "", | ||
211 | - # "나의 사랑 나의 신부": "", | ||
212 | - # "바르게 살자": "", | ||
213 | - # "내 사랑 내 곁에": "", | ||
214 | - # "초능력자": "", | ||
215 | - # "굿바이 싱글": "", | ||
216 | - # "몽타주": "", | ||
217 | - # "명당": "", | ||
218 | - } | ||
219 | -#500만 이상 + 스크린 수당 매출액 50위 이상 => 79개 영화, 730개 노드, 9348개 엣지 | ||
220 | - | ||
221 | -def named_union(graph1, graph2): #두 그래프 합성 | ||
222 | - A = graph1.copy() | ||
223 | - B = graph2.copy() | ||
224 | - Aname = A.vs["name"][:] | ||
225 | - Bname = B.vs["name"][:] | ||
226 | - Aes = A.es[:] | ||
227 | - Bes = B.es[:] | ||
228 | - Anams = set(Aname) | ||
229 | - Bnams = set(Bname) | ||
230 | - A.add_vertices(list(Bnams - Anams)) | ||
231 | - B.add_vertices(list(Anams - Bnams)) | ||
232 | - nams = sorted(Anams | Bnams) | ||
233 | - Aind = [nams.index(nm) for nm in A.vs['name']] | ||
234 | - Bind = [nams.index(nm) for nm in B.vs['name']] | ||
235 | - A = A.permute_vertices(Aind) | ||
236 | - B = B.permute_vertices(Bind) | ||
237 | - Z = A | B | ||
238 | - Z.vs['name'] = nams | ||
239 | - Z.vs["label"] = Z.vs["name"][:] | ||
240 | - return Z | ||
241 | - | ||
242 | -def printResult(names, values, x, y, n): | ||
243 | - for i in range(0, n): | ||
244 | - text = names[i][:] | ||
245 | - for r in [" ", "-", ":", "(", ")", ",", "1", "2", "3", "4", "6", "7", "8", "9"]: | ||
246 | - text = text.replace(r, "") | ||
247 | - name = names[i].rjust(x - len(text)) | ||
248 | - value = str(round(values[i], 5)) | ||
249 | - value = value.rjust(y) | ||
250 | - print(i, name, value) | ||
251 | - | ||
252 | -print("<스크린수 당 매출액 1~50위>") | ||
253 | -# nnn = 0 | ||
254 | -# for s in salesPerScreensSorted: | ||
255 | -# if(s["name"] not in data): | ||
256 | -# print(nnn, s) | ||
257 | -# nnn += 1 | ||
258 | -printResult(list(map(lambda x:x["name"], salesPerScreensSorted)), list(map(lambda x:x["value"], salesPerScreensSorted)), 30, 16, 50) | ||
259 | - | ||
260 | -frequency = {} | ||
261 | -weight = {} | ||
262 | -keys = [] | ||
263 | -top = data["명량"].split(",") | ||
264 | -for i in range(0, len(top)-1): | ||
265 | - frequency[top[i]] = 1 | ||
266 | - for j in range(i+1, len(top)): | ||
267 | - join = sorted([top[i], top[j]]) | ||
268 | - join = join[0]+","+join[1] | ||
269 | - weight[join] = { | ||
270 | - "audiences": audiences["명량"], | ||
271 | - "count": 1 | ||
272 | - } | ||
273 | - keys.append(join) | ||
274 | -frequency[top[len(top) - 1]] = 1 | ||
275 | -G = Graph.Full(len(top)) | ||
276 | -G.vs["name"] = top[:] | ||
277 | -G.vs["label"] = G.vs["name"][:] | ||
278 | -del data["명량"] | ||
279 | - | ||
280 | -for movie in data: | ||
281 | - actors = data[movie].split(",") | ||
282 | - g = Graph.Full(len(actors)) | ||
283 | - g.vs["name"] = actors[:] | ||
284 | - g.vs["label"] = g.vs["name"][:] | ||
285 | - G = named_union(G, g) | ||
286 | - for a in actors: | ||
287 | - if(a not in frequency): | ||
288 | - frequency[a] = 1 | ||
289 | - else: | ||
290 | - frequency[a] += 1 | ||
291 | - | ||
292 | - for i in range(0, len(actors)-1): | ||
293 | - for j in range(i+1, len(actors)): | ||
294 | - join = sorted([actors[i], actors[j]]) | ||
295 | - join = join[0]+","+join[1] | ||
296 | - if(join not in weight): | ||
297 | - weight[join] = { | ||
298 | - "audiences": audiences[movie], | ||
299 | - "count": 1 | ||
300 | - } | ||
301 | - keys.append(join) | ||
302 | - else: | ||
303 | - weight[join]["audiences"] += audiences[movie] | ||
304 | - weight[join]["count"] += 1 | ||
305 | - | ||
306 | -print("\n<같은 영화에 같이 출연한 빈도수>") | ||
307 | -topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10] | ||
308 | -for t in topten: | ||
309 | - print(t, ":", weight[t]["count"]) | ||
310 | - | ||
311 | -names, names1, names2 = G.vs["name"][:], G.vs["name"][:], G.vs["name"][:] | ||
312 | - | ||
313 | -print("\n<degree>") | ||
314 | -degree = G.degree() | ||
315 | -degreeSorted = sorted(degree, reverse=True)[:10] | ||
316 | -topDegree = sorted(names1, key=lambda n: degree[names2.index(n)], reverse=True)[:10] | ||
317 | -printResult(topDegree, degreeSorted, 5, 4, 10) | ||
318 | - | ||
319 | -edge_weight = [1] * len(G.es) | ||
320 | -for k in keys: | ||
321 | - if(weight[k]["count"] == 1): | ||
322 | - continue | ||
323 | - [s, e] = k.split(",") | ||
324 | - sIdx, eIdx = names.index(s), names.index(e) | ||
325 | - edges = G.es.select(_between = ([sIdx], [eIdx])) | ||
326 | - for e in edges: | ||
327 | - edge_weight[e.index] = weight[k]["count"] | ||
328 | - | ||
329 | -print("\n<betweenness>") | ||
330 | -bn = G.betweenness(weights=edge_weight) | ||
331 | -bnSorted = sorted(bn, reverse=True)[:10] | ||
332 | -topBn = sorted(names1, key=lambda n: bn[names2.index(n)], reverse=True)[:10] | ||
333 | -printResult(topBn, bnSorted, 5, 12, 10) | ||
334 | - | ||
335 | -print("\n<closeness>") | ||
336 | -cn = G.closeness(weights=edge_weight) | ||
337 | -cnSorted = sorted(cn, reverse=True)[:10] | ||
338 | -topCn = sorted(names1, key=lambda n: cn[names2.index(n)], reverse=True)[:10] | ||
339 | -printResult(topCn, cnSorted, 5, 8, 10) | ||
340 | - | ||
341 | -print("\n<eigen>") | ||
342 | -eg = G.eigenvector_centrality(weights=edge_weight) | ||
343 | -egSorted = sorted(eg, reverse=True)[:10] | ||
344 | -topEg = sorted(names1, key=lambda n: eg[names2.index(n)], reverse=True)[:10] | ||
345 | -printResult(topEg, egSorted, 5, 8, 10) | ||
346 | - | ||
347 | -print("\n<total nodes>") | ||
348 | -print(len(G.vs)) | ||
349 | - | ||
350 | -print("\n<total edges>") | ||
351 | -print(len(G.es)) | ||
352 | - | ||
353 | -out = plot(G, | ||
354 | - bbox = (2000, 2000), | ||
355 | - vertex_size = [int((float(i)/max(bn)) * 20) + 5 for i in bn], | ||
356 | - vertex_label_size = 10, | ||
357 | - vertex_label_dist = 1, | ||
358 | - vertex_label_angle = 2, | ||
359 | - vertex_label_color = "black", | ||
360 | - edge_color = "grey", | ||
361 | - #autocurve = True, | ||
362 | - layout = G.layout("fr") | ||
363 | - ) | ||
364 | -out.save("test.png") | ||
365 | - | ||
366 | -#C:\Users\ghdms\2014104137\소스코드\centrality.py | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment