ghdms

영화별 출연진의 betweenness 평균 산출

...@@ -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
......
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