鐩綍 1.鍝佺墝鍩哄洜鐨勮嚧鍛界己闄?2.鍝佺墝鏂囧寲鐨勮嚧鍛界己闄?3.鑷虫殫鏃跺埢鐨勮嚜鎴戞晳璧?/p>
鎹箻鑱斾細鍏竷鐨?0鏈堜唤鍥藉唴鏂拌兘婧愯溅閿€閲忔暟鎹樉绀猴紝姣斾簹杩互20涓囩殑閿€閲忎竴楠戠粷灏樸€傞暱瀹夈€侀棶鐣屻€佸悏鍒╅攢閲忓悓姣斿骞呮渶澶э紝鍒嗗埆涓?08.4%銆?99.8%銆?10.2%銆傞櫎鐗规柉鎷夐攢閲忚穼鍑烘帓琛屾鍓?浣嶅眳绗?澶栵紝閿€閲忔帓琛屽墠15鍏ㄦ槸鍥戒骇鍝佺墝銆?鑰屼綔涓洪€犺溅鏂板娍鍔涚殑钄氬皬鐞嗭紝钄氭潵銆佺悊鎯抽攢閲忓悇1涓囧杈嗭紝鍒嗗埆鎺掑悕绗?0銆?1浣嶏紝鍓嶈€呭悓姣斿骞?74.3%锛屽悗鑰?1.4%锛岃窡涓嶄笂87%鐨勮涓氬閫熴€傚皬楣忎笉浠呭嚭鐜颁簡49.70%鐨勫悓姣斾笅婊戯紝閿€閲忎篃鍙湁5101杈嗭紝鐩告瘮9鏈堜唤8468杈嗙殑浜や粯杩戜箮鑵版柀锛?0鏈堜唤钄氬皬鐞嗕笁瀹堕攢閲忓悎璁″競鍦哄崰姣斾粎涓?.5%銆備粠浠婂勾1-10鏈堜唤鏁版嵁鏄剧ず锛岃敋灏忕悊閿€閲忔棭宸茶穼鍑哄墠10銆?閿€閲忚悗闈★紝鍙犲姞涓氱哗鎸佺画浜忔崯锛屾偛瑙傞鏈熷鑷磋祫鏈柉鐙傛姏鍞叾鑲$エ銆備粖骞?鏈堝簳浠ユ潵锛岃敋鏉ャ€佺悊鎯宠偂浠峰潎涓嬭穼瓒?5%锛屽皬楣忔洿鏄毚璺?7%銆傛洿鍔犱笉鐞嗘兂鐨勬槸锛屼粎2022骞翠笂鍗婂勾锛屼笁瀹朵簭鎹熷悎璁?6浜裤€?鐤儏閫氳儉鍙犲姞锛岄攢閲忚偂浠疯叞鏂╋紝浜忔崯鎸佺画鎵╁ぇ锛屼紶缁熻溅浼佸己鍔垮礇璧凤紝鐗规柉鎷変环鏍煎叚杩炴定鍚庨檷浠凤紝骞跺惎鍔?5涓囧厓杞﹀瀷鐨勭爺浜ц繘涓€姝ユ尋鍘嬬敓瀛樼┖闂达紝鍝悞銆侀棶鐣屻€侀浂璺戠瓑鍚庢潵鑰呭璧风洿杩姐€傝敋灏忕悊宸茬珯鍦ㄧ敓姝诲瓨浜$殑鎮礀杈癸紝鑰屼笖锛岃繖鍦烘儴鐑堢殑娣樻卑璧涗互浣曠鏂瑰紡浣曟椂缁撴潫銆傜洰鍓嶏紝浼间箮鐪嬩笉鍒板ご銆?鍝佺墝鍩哄洜鐨勮嚧鍛界己闄?2003骞达紝浠婃棩鐨勫浗鍐呭涓ゅぇ鏂拌兘婧愯溅宸ㄥご姣斾簹杩拰鐗规柉鎷夊悓骞存垚绔嬨€?008骞达紝姣斾簹杩帹鍑轰簡棣栨鏂拌兘婧愯溅F3DM锛岀壒鏂媺涔熶簬鍚屽勾鎺ㄥ嚭浜嗗鏃忚€佸ぇ鍝oadster銆備笉鐭ユ槸鑻遍泟鎵€瑙佺暐鍚岋紝杩樻槸鑷鎷呭綋璧蜂簡鏃朵唬璧嬩簣鐨勮矗浠讳娇鍛斤紝鎴栨姂鏄彈鍒扮壒鏂媺鍜屾瘮浜氳开鏍囨潌绀鸿寖鐨勫奖鍝嶃€傝敋灏忕悊2014銆?015鍏堝悗鎴愮珛锛屼笖閮介噰鍙栦簡鑱斿悎鍒涘浜虹殑妯″紡銆傛潕鏂屻€佹潕鎯炽€佷綍灏忛箯涓変綅绉诲姩浜掕仈缃戞椂浠e垱涓氭垚鍔熺殑寮勬疆鍎匡紝浠庤繖涓€鍒诲紑濮嬶紝鍙堝湪鏂拌兘婧愯禌閬撹繘琛岄暱鏈熺殑鐩哥埍鐩告潃銆?钄氭潵鐨勫搧鐗屾効鏅槸鈥滆嚧鍔涗簬閫氳繃鎻愪緵楂樻€ц兘鐨勬櫤鑳界數鍔ㄦ苯杞︿笌鏋佽嚧鐢ㄦ埛浣撻獙锛屼负鐢ㄦ埛鍒涢€犳剦鎮︾殑鐢熸椿鏂瑰紡鈥濓紝寮鸿皟鏋佽嚧鐨勭敤鎴蜂綋楠岋紝瀵规妧鏈爺鍙戝垱鏂扮獊鐮寸殑閲嶈鎬у己璋冧笉澶燂紝鍏锋湁鏄庢樉鐨勭Щ鍔ㄤ簰鑱旂綉鐗硅壊銆傝€屼笖鍓嶅悗涓ゅ彞涓や釜鈥滅敤鎴封€濋噸澶嶏紝鏁翠釜鎰挎櫙鏄惧緱姣旇緝鎷栨矒鍜屽啑闀匡紝闅句互璁板繂鍜屼紶鎾€?鐞嗘兂鐨勫搧鐗屾効鏅槸鈥滃垱閫犵Щ鍔ㄧ殑瀹跺涵绌洪棿鈥濓紝姹借溅鎬庝箞鑳藉拰瀹跺涵绌洪棿鑱旂郴璧锋潵锛屾槸绫讳技浜庡父骞村緟鍦ㄨ溅涓婄殑闀块€斿徃鏈猴紝澶╁ぉ鍦ㄥ婕傛硦娴佹氮锛屽眳鏃犲畾鎵€锛熷搴┖闂撮渶瑕佺殑鏄ǔ瀹氾紝鑰岀Щ鍔ㄤ笉浣嗗甫鏈夋槑鏄剧殑绉诲姩浜掕仈缃戞€濈淮鐗瑰緛锛屼篃涓嶈兘璁╀汉鎰熷彈鍒板搴殑娓╅Θ瀹夊畞銆傚搧鐗屾効鏅笉浣嗚浜烘棤鎵€閫備粠锛屼笉鐭ヤ綍璋擄紝鑰屼笖鍓嶅悗鐭涚浘銆?灏忛箯姹借溅鈥滄帰绱㈢鎶€锛屽紩棰嗘湭鏉ュ嚭琛屽彉闈┾€濓紝鎻愬埌浜嗙鎶€銆傚彲鈥滄帰绱⑩€濅簩瀛椾技涔庢病鏈夊噯澶囧ソ灏卞寙鍖嗕笂椹紝涓嶆垚鐔熺殑鎶€鏈垨鑰呬骇鍝佹槸瑕佹妸鐢ㄦ埛褰撳皬鐧介紶鍜岃瘯楠屽搧鍚楋紵涓嶄絾娌℃湁娑堥櫎寮ュ悎鏂版妧鏈柊浜у搧缁欑敤鎴峰甫鏉ョ殑蹇冪悊璺濈鍜岃竟鐣屾劅锛屽弽鑰岃鐢ㄦ埛鑾悕鎷呭咖鍜屾亹鎯с€?鐗规柉鎷夊潥瀹堚€滃姞閫熶笘鐣屽悜鍙寔缁兘婧愮殑杞彉鈥濈殑鍝佺墝鎰挎櫙锛屽媷浜庢壙鎷呰矗浠讳娇鍛斤紝涓鸿兘婧愭灟绔拰姹℃煋鎻愪緵瑙e喅鏂规锛屾爲绔嬪叏鐞冩爣鏉嗭紝杞彉鐨勫墠鎻愬拰鎵嬫鏄妧鏈垱鏂板拰绐佺牬銆傛瘮浜氳开鈥滅敤鎶€鏈垱鏂帮紝婊¤冻浜轰滑瀵圭編濂界敓娲荤殑鍚戝線鈥濈殑鍝佺墝鎰挎櫙锛岀洿鎺ョ偣鍚嶆妧鏈寔缁垱鏂帮紝鏈€缁堝洖褰掑埌缇庡ソ鐢熸椿鐨勫悜寰€鍜屾弧瓒炽€傜壒鏂媺鍜屾瘮浜氳开鏇寸鍚堢鎶€琛屼笟鍝佺墝鎰挎櫙鐨勮〃杩版柟寮忓拰瑙勮寖瑕佹眰銆?鏂拌兘婧愯涓氫綔涓烘妧鏈鍨掕緝楂樼殑琛屼笟锛屾妧鏈簳搴ф墠鏄紒涓氬媷绔嬫疆澶达紝鍩轰笟闀块潚鐨勬牴鏈€傛妧鏈垱鏂扮獊鐮存墠鑳芥墦纾ㄦ洿濂界殑浜у搧锛岃繘鑰岀粰鐢ㄦ埛鏇村ソ鐨勪綋楠岋紝骞跺舰鎴愭寔涔呯殑绔炰簤浼樺娍鍜屽搧鐗屾孩浠枫€傛瘮浜氳开鍜岀壒鏂媺鐖嗗彂鍓嶅骞寸殑鎶€鏈Н娣€鍜屽竷灞€锛屽挨鍏舵槸姣斾簹杩緷闈犳妧鏈嚜鐮斿舰鎴愮殑澹佸瀿鍜屾姢鍩庢渤锛屾墠鏄粖澶╅攢閲忎负鐜嬬殑鏍规湰銆?鍝佺墝鎰挎櫙浣滀负浼佷笟鍙戝睍鐨勭翰棰嗗拰鎴樼暐鏂瑰悜锛屽鏋滀竴鏃﹀亸绂昏涓氬睘鎬ц姹傦紝鍦ㄥ搧鐗岃繍钀ユ柟鏂归潰闈㈢Н绱寔缁殑鏃堕棿瓒婁箙锛屽甫鏉ョ殑浼ゅ瓒婂ぇ锛屽搧鐗屾姉鍑诲唴澶栭儴椋庨櫓鐨勮兘鍔涗篃灏辫秺寮憋紝涓€鏈夐鍚硅崏鍔紝绔嬪嵆琛€娴佹垚娌崇殑妗堜緥瀹炲湪澶氫笉鑳滄暟銆?浠庡搧鐗屽悕绉板垎鏋愶紝钄氭潵锛屾湭鏉ワ紝鏈夎拷姹傜編濂芥槑澶╁拰钄氳摑澶╃┖涔嬫剰锛屾瘮杈冩帴杩戞柊鑳芥簮杞﹀彂灞曠殑鏃朵唬瑕佹眰銆傝€屽皬楣忓拰鐞嗘兂鍒欑洿鎺ュ皢鍒涘浜虹殑鍚嶅瓧宓屽叆鍝佺墝鍚嶇О锛屾瘮鑲╀赴鐢般€佹湰鐢扮殑瀹忓ぇ鎰挎湜鐨勭‘鍙槈锛屽鏋滅粡杩囧骞寸殑鍝佺墝杩愯惀绉穩锛屾瘮鑲╄秴瓒婁赴鐢般€佹湰鐢扮殑鍙兘鎬т笉鏄笉瀛樺湪銆傚彲闈㈠鏂拌兘婧愯禌閬撶殑杩呯寷鍙戝睍鍜屾縺鐑堢珵浜夛紝甯傚満鍜屽鎵嬩笉浼氱粰鍏剁暀涓嬪厖瓒崇殑鍝佺墝绉穩鏃堕棿鍜屾満浼氥€傚啀娆★紝鍙湁鏃朵唬闇€瑕佺殑鏂拌兘婧愯涓氬拰鏂拌兘婧愪紒涓氬锛屼笉鏄紒涓氬鍒涢€犱簡鏂拌兘婧愭椂浠c€傚嵆渚胯繛椹柉鍏嬭繖绉嶅共鍟ュ暐琛岋紝鏍锋牱閮借锛屼笂澶╁叆鍦帮紝澶勫楂樿皟纰扮摲鐨勯《娴佸拰鍏ㄧ悆缃戠孩锛岄兘涓嶆暍鎶婁紒涓氱洿鎺ュ彨椹柉鍏嬶紝鑰屾槸鍙栧悕鐗规柉鎷夛紝浠ヨ〃杈惧绉戝鐨勬暚鐣忓拰绉戝瀹剁殑鑷存暚锛岃繖鏍风殑鍝佺墝鍚嶇О鍜屽瘬鎰忔墠鏇存湁璺ㄨ秺鏃朵唬鐨勫紶鍔涘拰褰卞搷鍔涖€?鍦ㄤ粖骞寸殑涓栫晫浜掕仈缃戝ぇ浼氫箤闀囧嘲浼氫笂锛岄樋閲屻€佷含涓滀袱瀹堕甯墽琛屽畼蹇电潃绋垮瓙琛ㄧず瑕佽瀺鍚堝拰鍔╁姏瀹炰綋缁忔祹锛屼笌浠ュ線椹簯渚冧緝鑰岃皥锛屽垬寮轰笢闅忓叴鑰屽彂鎱锋叏婵€鏄備笉鍚屻€傜綉涓婁竴涓瀛愶細椹簯涓嶈澶ц瘽浜嗭紝鍒樺己涓滀笉鍐嶅洖鎬间簡锛屼繛鏁忔椽涓嶈楦℃堡浜嗭紝闆峰啗涓嶈緭鍑烘瀛愪簡锛屽紶鏈濋槼璁茬墿鐞嗗幓浜嗭紝椹寲鑵俱€佹潕褰﹀畯銆佷竵纾婁笉鍙戝0浜嗭紝鐜嬪叴鐣欎笅涓€鍙ワ細鈥滆繖鎴栬鏄湭鏉?0骞存渶濂界殑涓€骞粹€濆氨娑堝け浜嗐€備竴涓椂浠o紝浜掕仈缃戝拰骞冲彴缁忔祹鏃犲簭鎵╁紶鐨勬椂浠g粨鏉熶簡锛岃繖涓瀛愬€煎緱鍥藉唴鎵€鏈変紒涓氬娣辨€濆叡鍕夈€?浠庢妧鏈鏉傚害鏉ョ湅锛岀洰鍓嶆柊鑳芥簮杞︽贩鍔ㄦ妧鏈妧鏈惈閲忔渶楂橈紝澧炵▼娆′箣锛岀函鐢垫妧鏈惈閲忔渶浣庛€備粠杩欎釜瑙掑害鍒嗘瀽锛岃敋灏忕悊鐨勫搧鐗屽鏃忓拰浜у搧鍝佺墝瑙勫垝涔熸槸姣旇緝鑷村懡鐨勩€?钄氭潵鐜版湁鐨凟S8銆丒S6銆丒C6銆丒S7銆丒T7銆丒T5鍏杞﹀瀷涓紝鍞环鏈€浣庣殑ET5涔熻32.8涓囪捣锛岄鑸増ES8鍒欓珮杈?9.8涓囧厓銆備环鏍煎畾浣嶄笌鐗规柉鎷夐珮搴﹂噸鍚堬紝鍕囨皵鐨勭‘鍙槈銆傚彲钄氭潵鐨勮溅鍨嬫槸鎶€鏈惈閲忔渶浣庣殑绾數鎶€鏈紝鑰屼笉鏄洰鍓嶆渶鍏堣繘鐨勬贩鍔ㄦ妧鏈€傜己涔忔妧鏈敮鎾戠殑楂樼瀹氫綅鍜岄珮浠锋牸濡備綍闀挎湡瀹炵幇鍝佺墝婧环锛屽苟璁╃敤鎴峰績鐢樻儏鎰块暱鏈熶负涔嬩拱鍗曪紵鐢ㄦ埛涓嶆槸绮変笣锛屼笉浼氫负浜嗘儏鎬€鐧界櫧鏀粯鍑犲崄涓囷紝鑰屾妧鏈惈閲忎笉楂樼殑鍝佺墝鍙堝浣曚繚闅滃嚭琛屽畨鍏紵 姝ゅ墠锛岃敋鏉T7灏遍绻佽鏇濆搧鎺ч棶棰橈紝鍖呮嫭鍚庢。鐜荤拑鎺ョ嚎瑁搁湶銆佸唴楗板澶勫紓鍝嶃€佸骇妞呮澗鍨捣鎷辩瓑闂銆傛洿鎯婁汉鐨勬槸锛屾湁杞︿富鍙嶆槧鍒氳喘涔颁笉涔呯殑钄氭潵ET7鍦ㄦ甯歌椹朵腑瓒寸獫锛屸€滄病鏈変换浣曞墠鍏嗭紝绐佺劧鏁磋溅鏂數锛屽埞杞﹀け鐏碉紝鍙兘渚濋潬鎯€х紦鎱㈠仠涓嬶紝鍏ㄩ儴鐢垫皵璁惧澶辩伒锛屽弻闂病娉曟墦寮€锛屾洿鍒彁鍦ㄥ悗澶囩鐨勪笁瑙掓灦銆傗€濊繖瀵瑰畾浣嶄簬涓ぇ鍨嬬數鍔ㄨ豹鍗庤溅ET7锛屽敭浠?5.80鈥?3.60涓囧厓锛屽姩涓嶅姩灏辫洞绐濓紝浣曟潵楂樼鍝佽川锛熸樉鐒朵笉鏄溅杈嗙殑浣庡帇钃勭數姹犲厖鐢垫ā鍧楀彂鐢熶簡澶辨晥鏁呴殰鐨勫叕鍏宠杈炶€岃兘鎺╃洊杩囧幓鐨勩€?钄氭潵鐨勭壒鑹叉槸鎹㈢數鏈嶅姟锛屾槸澶氫釜杞︿紒鏇剧粡灏濊瘯杩囩殑妯″紡锛屽彧鏄厖鐢垫々涓嶆櫘鍙婂拰鍏呯數鏃堕棿闀跨殑鏉冨疁涔嬭銆傚鏋滃厖鐢垫々鏅強鍜屽厖鐢垫椂闂撮暱鐨勯棶棰樿瑙e喅锛屾妸鑷繁鍥板湪缂轰箯鎶€鏈敮鎾戠殑鈥滈珮鎬ц兘鐨勭數鍔ㄨ溅鈥濋珮绔畾浣嶇殑钄氭潵锛屼綍鍘讳綍浠庣殑纭槸涓棶棰樸€傚洜涓烘瀬鑷寸殑鐢ㄦ埛杩愯惀鏈嶅姟鏈韩灏卞緢瀹规槗琚ā浠匡紝濡傛灉鏁翠釜鏂拌兘婧愬競鍦烘湇鍔¢兘鎻愬崌浜嗭紝钄氭潵鐨勭珵浜変紭鍔垮湪鍝噷锛?缁忚繃鍗佸骞寸殑鍙戝睍鍜屾櫘鍙婏紝鏂拌兘婧愯溅鏃╁凡鍛婂埆灏濋矞鍜岄珮棰濆埄娑︽椂浠o紝鏋佽嚧鐨勬€т环姣斻€佸洖褰掕涓氬钩鍧囧埄娑︿篃鏄搧鐗岃繍钀ラ渶瑕侀€氱洏鑰冭檻鐨勯棶棰樸€傛瘮璧锋瘮浜氳开姹夈€佺壒鏂媺Model 3锛岃吹浜嗕竴鍊嶇殑钄氭潵姣棤浼樺娍鍙█锛岄潰涓寸摱棰堟槸杩熸棭鐨勪簨銆傚悓鏃讹紝钄氭潵涓诲姏杞﹀瀷ES6姝i伃閬囨縺鐑堢珵浜夛紝鐞嗘兂ONE銆侀棶鐣孧7銆佺壒鏂媺Model Y銆佸皬楣廏9绛夊鎵嬶紝姝e湪铓曢钄氭潵鈥滈珮绔豹鍗庘€濈數鍔⊿UV鐨勫競鍦轰唤棰濄€?鎹繎鏈熻敋鏉ユ苯杞﹀叕鍛婃暟鎹樉绀猴紝10鏈堜氦浠橀噺涓?0,059杈嗭紝鍚屾瘮澧為暱174.3%銆?-10鏈堜唤绱浜や粯浜?2,493杈嗘苯杞︼紝鍚屾瘮澧為暱32.0%銆備氦浠?979杈嗛珮绔櫤鑳界數鍔⊿UV锛屽叾涓寘鎷?814杈咵S7銆?080杈嗛珮绔櫤鑳界數鍔ㄨ娇杞︼紝鍏朵腑鍖呮嫭3050杈咵T7鍙?030杈咵T5锛屾渶濂界殑鎴愮哗涔熸墠鏄氦浠橀噺浠呬粎杩囦簡3涓囪締鐨勭敓姝荤嚎銆傚敖绠¤敋鏉S8銆丒S6銆丒C6锛屽畾浣嶄笌椋庢牸宸紓鏇村ぇ锛屾嫇瀹界敤鎴蜂汉缇ょ殑鍔熻兘鏇村己銆傚彲缂轰箯鎶€鏈敮鎾戠殑楂樺畾浠凤紝浼氱己涔忔寔缁珵浜夊姏鐨勬€佸娍瓒婃潵瓒婃槑鏄俱€備互姝ゅ垎鏋愶紝鏃犺鏄瀹屾垚浠婂勾15涓囩殑浜や粯閲忥紝杩樻槸鏄庡勾绗洓瀛e害鐩堜簭骞宠 鐨勭洰鏍囷紝閮借鎵撲釜闂彿銆?鐞嗘兂鏈塐NE銆丩7 銆丩8銆丩9杞﹀瀷锛屽緱鐩婁簬鏄涓€涓帹鍑哄绋嬬殑鏂板娍鍔涜溅浼侊紝杞﹀瀷灏戯紝鐮斿彂鎴愭湰浣庯紝宸茬粡鎺ヨ繎鐩堝埄銆傝€屼笓娉ㄤ簬瀹跺涵鐢ㄨ溅甯傚満锛岃兘澶熸湁鏁堝湴鎵撳紑涓€涓粏鍒嗗競鍦猴紝甯姪鍏舵椿涓嬪幓浼间箮涓嶆垚闂銆傛浘缁忔槸30涓囦互涓婂敮涓€鐨勫绋嬭溅浼侊紝鍙绋嬫妧鏈繙姣斾笉涓婃贩鍔ㄧ殑鎶€鏈惈閲忛珮锛屽湪鐗规柉鎷夈€佹瘮浜氳开涓珮绔溅鍨嬮潰鍓嶏紝鐞嗘兂30涓囩殑浠锋牸鏀拺鐐瑰拰绔炰簤鍔涘湪鍝噷锛熶粠鍏ㄧ悆鑼冨洿鏉ョ湅锛屾棤璁烘槸浼犵粺鐕冩补杞﹀法澶达紝杩樻槸鏂板娍鍔涳紝閮介€氳繃搴炲ぇ鐨勪骇鍝佺嚎瑙勫垝鍜屽搧鐗屽鏃忔墿澶у競鍦轰唤棰濄€傝繖涔堝皯鐨勮溅鍨嬪浣曟敮鎾戠悊鎯冲湪閫犺溅椹媺鏉句腑缁х画璧颁笅鍘伙紝鑱氱劍鍋氭繁灏忎紬甯傚満濡備綍鎶靛尽鍚勮矾绔炰簤瀵规墜铏庡彛澶洪锛熷喌涓旓紝鐞嗘兂L8銆丩9鐩爣鍙椾紬缇や綋鐨勯噸鍙犲害杩滈珮浜庣珵浜夊鎵嬶紝鏈夌偣鍍忓弻鎵嬩簰鎼忓湪鑷垜鍐呭嵎銆?灏忛箯鐩墠鏈塆3 銆丟5銆丟9銆丳7銆丳5銆丳9绛夎溅鍨嬶紝灏忛箯瀹樼綉鏄剧ず锛屽皬楣忔柊杞9瀹氫綅鏅鸿兘SUV锛?0.99涓囧厓璧峰敭锛汸7瀹氫綅杞胯窇锛?3.99涓囧厓璧峰敭锛汸5瀹氫綅瀹剁敤杞胯溅锛?7.79涓囧厓璧峰敭锛汫3i瀹氫綅閮藉競SUV锛?6.89涓囧厓璧峰敭銆備笉浣嗕笌姣斾簹杩殑涓诲姏杞﹀瀷瀹嬨€佺Е銆佹眽绯诲垪15涓団€?0涓囧厓浠锋牸鍖洪棿閲嶅悎搴︽瘮杈冮珮锛岄珮涓綆鐨勫叏绾垮竷灞€锛屾樉寰楀畾浣嶄笉娓呫€傚搧鐗屽悕绉颁篃娌℃湁鏈夋晥鍖哄垎锛屾畠鍙婃睜楸肩殑鍚庢灉闅句互閬垮厤銆?灏忛箯涓€寮€濮嬫帹鍑篏3锛屼緷闈犵浉瀵逛綆鐨勪环鏍间紭鍔块潬璧伴噺鎵╁ぇ甯傚満浠介锛岄攢閲忚〃鐜版瘮杈冪悊鎯炽€傚敖绠″洜涓哄崌绾ч棶棰樺拰鑰佽溅涓诲彂鐢熶簡鎽╂摝锛屼絾鏈€缁堣繕鏄緱鍒颁簡濡ュ杽瑙e喅銆傜浜屾杞﹀瀷灏忛箯P7锛屾浘琚涓烘渶鏈夋満浼氭湀閿€閲忕牬涓囩殑杞﹀瀷锛屽湪琛ヨ创鏀跨瓥鐨勫姪鎺ㄤ笅锛屾湀閿€閲忎竴搴︽帴杩戜竾杈嗗ぇ鍏炽€傚彲鎯滀笂甯傛椂闂磋緝鏅氾紝涓斿競鍦虹珵浜夎秺鏉ヨ秺婵€鐑堬紝鍥戒骇鍝佺墝鎺ㄥ嚭浜嗗儚鏋佹蔼001銆佹瘮浜氳开娴疯惫銆佹鎷夐棯鐢电尗銆侀浂璺慍01绛夋湁绔炰簤鍔涚殑浜у搧锛屽洜姝7涓уけ浜嗗競鍦哄厛鏈猴紝闅句互绐佸洿鑰屽嚭銆傜涓夋杞﹀瀷灏忛箯P5锛岀敋鑷崇敤涓婁簡婵€鍏夐浄杈撅紝甯屾湜璁╂洿澶氱敤鎴疯兘閫氳繃杈冧綆鐨勪环鏍硷紝鏉ヤ綋楠屽皬楣忔櫤鑳藉寲鎶€鏈€傚彲鎯淧5閫犲瀷涓嶅鎯婅壋锛岃€屼笖瀹氫綅鐩稿灏忎紬锛屼互鏅鸿兘鍖栧鐢ㄦ埛浜х敓鍚稿紩鍔涚殑鐩爣涔熸湭杈炬垚銆?鏅鸿兘鍖栨槸澶ц秼鍔匡紝鍚勪釜鏂拌兘婧愯溅浼侀兘鍦ㄥ己璋冪鎶€鎰熷拰鏅鸿兘鍖栥€傛妸琛屼笟鍏辨€у綋鍋氬畾浣嶆爣绛撅紝鎺╃洊浜嗗搧鐗屼釜鎬у拰宸紓鍖栵紝寰堥毦褰㈡垚鍥哄畾蹇冩櫤鍜岃鐭ャ€傚喌涓旀妧鏈拰鏅鸿兘鍖栧彧鏄墜娈碉紝涓嶆槸鐩殑锛屽鏋滄妧鏈櫤鑳藉寲涓嶈兘缁欑敤鎴锋彁渚涙洿濂界殑鍑鸿瑙e喅鏂规鎴栦綋楠岋紝鍗曠函鐨勬櫤鑳藉寲鏍囩涓嶄絾闅句互褰㈡垚鏈夋晥鐨勫搧鐗岃鲸璇嗗害锛屾洿涓嶈兘浣滀负褰卞搷鐢ㄦ埛璐拱鍐崇瓥鐨勫厖瑕佹潯浠躲€?灏界灏忛箯鍦ㄨ嚜鍔ㄨ緟鍔╅┚椹跺拰鏅鸿兘搴ц埍鏂归潰鏈変竴瀹氱殑鎶€鏈Н绱拰浼樺娍锛屼絾涓庤涓氬法澶寸壒鏂媺銆佹瘮浜氳开銆佺櫨搴﹂樋娉㈢綏銆佸崕涓烘瘮杩樻槸鏈夊緢澶у樊璺濄€備互鑷繁鐨勭煭鏉跨洿闈㈢珵浜夊鎵嬬殑闀挎澘锛屼笉鑳借鏄釜鏄庢櫤鐨勫喅绛栥€傝櫧鐒跺皬楣忓拰鐗规柉鎷夋闈㈢‖鎶楃殑灞€闈紝瑕佹瘮钄氭潵鍜岀悊鎯抽兘瑕佹洿鐩存帴锛屼絾杩炵壒鏂媺閮藉湪寮鸿皟鍒堕€犲伐鑹恒€佹垚鏈帶鍒躲€佷緵搴旈摼鍜岄€犲瀷璁捐鐨勬椂鍊欙紝灏忛箯鍗曚竴鐨勬櫤鑳藉寲闀挎澘鐨勭‘鏃犳硶鏀拺鍏朵骇鍝佺殑缁煎悎绔炰簤鍔涖€?鍐典笖锛岃嚜鍔ㄩ┚椹舵妧鏈洰鍓嶄粛鐒舵病鏈夎窇杞︽湁缁濆棰嗗厛浼樺娍鐨勫鎵嬶紝鍚勫ぇ鍝佺墝浠嶇劧鍦ㄦ帰绱㈠畬鍠勪腑锛屾洿澶氳繕鏄湪灏侀棴鍦哄湴娴嬭瘯骞跺彇寰楁祴璇曠墝鐓ч樁娈点€傛寜鐓у崕涓轰换姝i潪鐨勫垎鏋愶紝鎶€鏈鍏堝崐姝ユ槸鏈€濂界殑鏃舵満锛屽鏋滈鍏堜笁姝ワ紝鍒欏繀鐒舵垚涓烘鍦ㄦ矙婊╀笂鐨勫墠娴€傚洜涓虹敤鎴峰熀浜庤緝浣庣殑淇′换搴︼紝瀵硅繃浜庤秴鍓嶇殑鎶€鏈拱鍗曚粯璐圭殑鎰忔効寰堜綆銆?浠婂勾浠ユ潵锛屽寘鎷竻鍗庡ぇ瀛﹀湪鍐呯殑浼楀鏈烘瀯閮藉湪鎺ㄥ姩鏅鸿兘缃戣仈姹借溅鐨勨€滀腑鍥芥柟妗堚€濓紝涓嶅皯鏁磋溅浼佷笟涔熼潪甯歌鍚屻€備富瑕佸師鍥犳槸鈥滀腑鍥芥柟妗堚€濆叿鏈夎緝寮虹殑鏈湴鍜岀ぞ浼氬睘鎬х壒寰侊紝蹇呴』瑕佹弧瓒冲拰閫傚簲鎴戝浗鐨勪氦閫氬熀纭€璁炬柦鍜屼俊鎭笌閫氫俊鍩虹璁炬柦浣跨敤鍜岀鐞嗚姹傦紝鍖呮嫭浜ら€氭硶瑙勩€佷俊鎭€氫俊鏍囧噯銆佷俊鎭畨鍏ㄤ笌鏁版嵁绠$悊銆佺浉鍏充骇鍝佹爣鍑嗙瓑銆傝繖瀵硅嚜鍔ㄩ┚椹跺叕鍙告櫘閬嶈拷姹傜殑鍏ㄦ爤鑷爺鎻愬嚭浜嗘洿楂樼殑鑳藉姏瑕佹眰锛屼笉浠呰鑳借嚜鐮旂畻娉曘€佽蒋浠跺拰鑷姩椹鹃┒鍩熸帶鍒跺櫒锛岃繕瑕佽兘澶熷疄鐜扳€滅銆佺銆佷簯鈥濈殑鍗忓悓锛岃繖涓矾寰勮櫧鐒舵竻鏅帮紝浣嗕緷鐒跺瓨鍦ㄦ妧鏈毦搴︺€侀噺浜у拰鎴愭湰闂銆?G3 銆丳7銆丳5涓夋鑰佽溅鍨嬪競鍦鸿〃鐜扮柌杞紝涓旀€ヤ簬鎾曟帀鎬т环姣旀爣绛撅紝鎻愬崌閿€閲忥紝灏忛箯杩涜浜嗗搧鐗屽崌绾с€傛帹鍑轰簡绗洓娆捐溅鍨婫9锛屽敭浠?0.99-46.99涓囦竾鍏冿紝浣曞皬楣忕О鈥淕9鏄?0涓囦互鍐呮渶濂界殑SUV鈥濄€備絾瀹氫綅5搴UV鐨勫皬楣廏9锛屼笂甯傝繃绋嬪苟涓嶉『鍒╋紝鍑虹幇浜嗙敤鎴峰悙妲戒骇鍝侀厤缃殑閫夋嫨闅惧害澶с€侀€夋嫨鎴愭湰楂樼瓑闂銆傜浉姣斾簬鐞嗘兂鍜岃敋鏉ラ珮绔畾浣嶏紝G9鐨勭洰鏍囨秷璐圭兢浣撲篃鐩稿妯$硦銆傝绉颁箣涓衡€滆姳50涓囦拱浜嗕釜涔炰笎鈥濈殑G9鐭湡鍐呮媺鍗囬攢閲忕殑璁炬兂涔熸垚浜嗘场褰憋紝涔熷拰涔嬪墠涓绘墦鎬т环姣旂殑鍝佺墝灞炴€х煕鐩惧啿绐侊紝鐨勭‘寰椾笉鍋垮け銆?涓綆绔拰楂樼瀹氫綅鐨勫弽鍙嶅澶嶏紝鍝佺墝鍗囩骇杩唬棰戦鍑洪棶棰樸€傛棦娌℃湁缁濆瓒呭墠鐨勬妧鏈敮鎾戯紝鍙堟棤娉曞閫犲嚭鍝佺墝宸紓鍖栵紝鍥犺€屽皬楣忛攢閲忔彁鍗囨€绘槸涓€娉笁鎶樸€備粠绱鏉ョ湅锛屾埅鑷?0鏈堝簳灏忛箯浜や粯閲忎粛鐒惰秴杩囪敋鏉ョ殑9.3涓囪締銆佺悊鎯崇殑9.7涓囪締銆傝櫧鐒跺皬楣忓叏骞存暣浣撲氦浠橀噺瓒呰繃浜?0涓囧彴銆備絾涓嬪崐骞存€ュ墽涓嬫粦鐨勮秼鍔胯繕鍦ㄧ户缁紝杩欐墠鏄皬楣忕洰鍓嶆€ラ渶瑙e喅鐨勯棶棰樸€?钄氬皬鐞嗕笁瀹跺搧鐗屽鏃忓叏閮ㄩ兘鏄互瀛楁瘝鎴栬嫳鏂囧紑澶村懡鍚嶏紝涓庢瘮浜氳开鍞愬畫鍏冩槑娓呫€佺壒鏂媺鐨凪odel绯诲垪鐩告瘮锛岀己灏戠畝娲佹槑蹇紝寰堥毦鐪嬪埌涓€涓濇枃鍖栫Н娣€鍜屾枃鍖栬嚜淇°€傚嵆浣胯寰佹湇鍏ㄧ悆甯傚満锛岃秺鏄腑鍥界殑锛屾墠瓒婃槸涓栫晫鐨勩€?鐒惰€岋紝浠や汉涓嶈В鐨勬槸锛岄潰瀵逛骇鍝佽川閲忓嵄鏈恒€佹暟鎹潪娉曢噰闆嗐€侀珮绠″ぉ浠峰勾钖€佸埞杞﹀け鐏靛畨鍏ㄤ簨浠躲€佷镜鏉冭缃氥€佹瘉绾﹀簲灞婄敓銆丼EC棰勬憳鐗屼簨浠躲€佸伐鍘傚仠浜х瓑涓€绯诲垪绀句細鍗辨満鍜屽叕鍏冲嵄鏈虹殑閬伄鎺╂帺銆傝敋灏忕悊涓変綅鎺岃埖浜鸿涔堝繖鐫€鍏紑瀵规爣鍜屾€肩壒鏂媺锛岃涔堝叕寮€瀵硅祵锛岃涔堝拻濯掍綋銆侀獋鍚岃绛夈€傚尓澶锋墍鎬濈殑绉嶇涓惧姩锛屾槸鍒绘剰妯′豢椹柉鍏嬪彛鏃犻伄鎷︼紝楂樿皟鍏紑韫祦閲忥紝杩樻槸闅忔€ц€屽彂锛屼护浜鸿垂瑙c€?/p>
鍐欏湪鍓嶉潰鐨勮瘽
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽
澶ч儴鍒嗙殑鑻遍泟鑱旂洘鐜╁搴旇閮界煡閬撹嫳闆勮仈鐩熷叏鐞冩€诲喅璧涚殑閲嶈鎬э紝杩欐槸鐢盧iot Games缁勭粐鐨勪笘鐣岃寖鍥村唴鐨勮嫳闆勮仈鐩熶勘涔愰儴涔嬮棿鐨勬瘮璧涖€傝椤硅禌浜嬭嚜2011骞村垱鍔炵涓€灞婂悗姣忓勾閮戒細鍦ㄥ崄鏈堜负鍏ㄧ悆鐨勮嫳闆勮仈鐩熺帺瀹跺甫鏉ヤ笘鐣屾渶寮虹殑淇变箰閮ㄤ箣闂寸殑瀵规姉銆傝嚜璇ラ」璧涗簨鍒涘姙浠ユ潵锛屽叕璁ゅ疄鍔涙渶寮虹殑涔熸槸璁ㄨ鐑害鏈€楂樼殑涓や釜璧涘尯鍒嗗埆鏄細闊╁浗璧涘尯浠ュ強涓浗澶ч檰璧涘尯銆傚湪宸蹭妇鍔炵殑涔濆眾鍏ㄧ悆鎬诲喅璧涗腑锛岄煩鍥借禌鍖烘嬁鍒拌繃5娆℃€诲啝鍐涳紝鍏朵腑SKT鐨勪腑鍗曢€夋墜Faker鏇存槸鎴愪负姣忓勾鍏虫敞鐨勭劍鐐广€備絾鏄?018骞碨8涓栫晫璧涗笂涓浗澶ч檰璧涘尯IG闃熶紞鎴愬姛鐧婚《涓嶄粎鍦嗕簡浼楀鍥藉唴鑻遍泟鑱旂洘鐜╁鐨勬ⅵ锛屼篃璁╀腑鍥藉ぇ闄嗚禌鍖洪噸鏂板洖褰掓渶寮鸿禌鍖轰箣鍒楋紝鑰?019骞寸殑S9涓栫晫璧涗腑鍥藉ぇ闄嗚禌鍖虹殑FPX闃熶紞鍐嶄竴娆℃嬁鍒颁笘鐣屾€诲啝鍐涙墠姝e紡璁╅煩鍥借禌鍖洪€€涓嬬鍧涖€傜粡杩囦竴浠e張涓€浠h嫳闆勮仈鐩熻亴涓氶€夋墜鐨勫姫鍔涚粓浜庤涓浗澶ч檰璧涘尯寰楀埌浜嗕笘鐣岃寖鍥寸殑璁ゅ彲锛屼篃寰椾互璁╄嫳闆勮仈鐩熻繖娆炬父鎴忓湪PUBG鐨勫啿鍑讳笅鍦ㄤ腑鍥藉競鍦鸿兘缁х画缁存寔鐢熷懡鍔涖€?/p>
鑳屾櫙浠嬬粛
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽
璇ユ暟鎹泦鍖呭惈浜?019骞磋嫳闆勮仈鐩熷叏鐞冩€诲喅璧涜嚜鍏ュ洿璧涘紑濮嬫墍鏈夐槦浼嶇殑鏁版嵁锛屽寘鎷琤an/pick锛宬da锛屾父鎴忔椂闀跨瓑鎬诲叡91涓瓧娈点€傝繖91椤规父鎴忔暟鎹冻浠ヤ粠鏁翠綋鍜岀粏鑺備笂瀹屾暣鐨勬弿杩颁竴鍦烘父鎴忥紝鎴戜滑浼氬埄鐢ㄨ繖浜涙暟鎹垎鏋愬悇闃熶紞鐨勭壒鐐广€傚洜涓烘垬闃熶箣闂寸殑姣旇禌鍜屽钩鏃舵父鎴忛噷鐨勬帓浣嶆瘮璧涙湁寰堝ぇ涓嶅悓锛屾墍浠ョ孩钃濇柟锛宐an/pick锛屽悇鍒嗚矾缁忔祹鎯呭喌涔熸垚涓轰簡闇€瑕佽繘琛屽垎鏋愮殑鐐广€?/p>
涓嬮潰鏄鏁版嵁闆嗕腑鍖呭惈鐨勫瓧娈典互鍙婂鍚勫瓧娈电殑瑙i噴锛?/p>
date锛氭瘮璧涜繘琛岀殑鏃ユ湡
side锛氱孩鏂规垨钃濇柟
position锛氶€夋墜鐨勪綅缃紙Top锛孧iddle锛孞ungle锛孉DC锛孲upport锛?/p>
player锛氶€夋墜鐨処D
team锛氶槦浼嶅悕绉?/p>
champion锛氶€夋墜閫夋嫨鐨勮嫳闆?/p>
ban1锛宐an2锛宐an3锛宐an4锛宐an5锛氫粠绗竴鍒扮浜旀绂侀€夌殑鑻遍泟
gamelength锛氭父鎴忔椂闀?/p>
result锛氭父鎴忕粨鏋?/p>
k锛宒锛宎锛氬嚮鏉€锛屾浜★紝鍔╂敾
teamkills锛宼eamdeaths锛氶槦浼嶆€诲嚮鏉€锛岄槦浼嶆€绘浜?/p>
doubles锛宼riples锛宷uadras锛宲entas锛氬弻鏉€锛屼笁鏉€锛屽洓鏉€锛屼簲鏉€
.......(涓棿鍖呭惈鐨勪紬澶氭父鎴忓厓绱犱俊鎭洜绡囧箙杩囬暱鍦ㄨ繖閲屼笉鍋氳В閲婏紝鍒嗘瀽鐢ㄥ埌鏃朵細鍙﹀仛瑙i噴锛?/p>
聽
鏁版嵁棰勫鐞?/p>
棣栧厛鐓т緥杩涜鏁版嵁棰勫鐞嗐€?/p>
#瀵煎叆闇€瑕佺敤鍒扮殑鍖?/p>
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#瀵煎叆鏁版嵁
wc_data=pd.read_csv('wc_players.csv')
#鐪嬬湅鏁版嵁鐨勬€婚噺
wc_data.shape
璇ユ暟鎹泦鏈?190鏉℃暟鎹紝91涓瓧娈点€?/p>
鎺ヤ笅鏉ョ湅鐪嬫暟鎹被鍨嬩互鍙婃湁娌℃湁缂哄け鏁版嵁銆?/p>
#鍏堟潵鐪嬩竴涓嬫暟鎹被鍨?/p>
wc_data.dtypes.value_counts()
#鐪嬩竴涓嬫湁娌℃湁缂哄け鏁版嵁
wc_data.isnull().sum().value_counts()
缁撴灉鏄剧ず鏈変袱涓瓧娈垫湁40涓己澶卞€硷紝涓€涓瓧娈垫湁1190涓己澶卞€硷紝涓€涓瓧娈垫湁5涓己澶卞€笺€傚湪纭畾缂哄け鍊肩殑澶勭悊鏂瑰紡涔嬪墠瑕佸厛鐪嬬湅杩欎簺鍊奸兘鏄粈涔堢被鍨嬶紝鏈変粈涔堝惈涔夈€?/p>
#鍒嗗埆鎵惧嚭鏈夌己澶卞€肩殑瀛楁
null_40=wc_data.columns[wc_data.isnull().sum()==40]
null_1190=wc_data.columns[wc_data.isnull().sum()==1190]
null_5=wc_data.columns[wc_data.isnull().sum()==5]
print('Columns with 40 null values:',null_40)
print('Columns with 1190 null values:',null_1190)
print('Columns with 5 null values:',null_5)
寰楀埌浜嗘湁缂哄€肩殑瀛楁鐨勪俊鎭紝鎴戜滑灏卞彲浠ラ€愪竴鍒嗘瀽濡備綍瀵圭己澶卞€艰繘琛屽鐞嗐€傚浜庢湁40涓己澶卞€肩殑'fbaron' 鍜?'fbarontime'锛岃繖涓や釜瀛楁鍒嗗埆琛ㄧず闃熶紞鏄惁鍑绘潃绗竴鏉$敺鐖典互鍙婂嚮鏉€绗竴鏉$敺鐖电殑鏃堕棿锛屽浜庤繖涓ゅ垪缂哄け鍊兼垜浠洿鎺ョ敤'0'濉厖锛堟敞鎰忚繖閲岃浣跨敤瀛楃涓诧紝鍥犱负杩欎袱鍒楃殑绫诲瀷涓衡€檕bject'銆傚啀鏉ョ湅鏈?190鏉$己澶卞€肩殑瀛楁锛?heraldtime' 琛ㄧず鍑绘潃宄¤胺鍏堥攱鐨勬椂闂达紝鍥犱负璇ュ垪鐨勭己澶卞€艰繃澶氫笖鏃犳硶浣跨敤骞冲潎鏁帮紝浼楁暟绛夊~鍏呮墍浠ョ洿鎺ユ妸杩欎竴鍒楀垹闄ゃ€傛渶鍚庡浜庢湁5涓己澶卞€肩殑'ban5'瀛楁锛屾垜浠彲浠ラ€夋嫨鐢ㄧ浜旀绂侀€夋渶澶氱殑鑻遍泟濉厖缂哄け鍊笺€?/p>
#涓?0涓己澶卞€肩殑瀛楁濉厖0
wc_data['fbaron'].fillna('0',inplace=True)
wc_data['fbarontime'].fillna('0',inplace=True)
#鐩存帴鍒犻櫎1190涓己澶卞€肩殑瀛楁
wc_data.drop(columns=['heraldtime'],inplace=True)
#涓?涓己澶卞€肩殑瀛楁濉厖璇ュ瓧娈典笅鍑虹幇娆℃暟鏈€澶氱殑鑻遍泟
wc_data['ban5'].fillna(wc_data['ban5'].value_counts().index[0],inplace=True)
#妫€鏌ユ暟鎹泦涓幇鍦ㄦ槸鍚﹁繕鏈夌己澶卞€?/p>
wc_data.isnull().sum().value_counts()
缁撴灉鏄剧ず鎴戜滑鐨勭己澶卞鐞嗚繃绋嬪凡缁忓畬鎴愩€?/p>
2019鍏ㄧ悆鎬诲喅璧涘寘鍚簡涓ら儴鍒嗭細鍏ュ洿璧涘拰姝h禌锛岃€岃繖涓ら儴鍒嗘棤璁烘槸闃熶紞瀹炲姏杩樻槸瀵规姉婵€鐑堢▼搴﹂兘鏈夊緢澶у尯鍒紝鎵€浠ユ垜浠鎶婅繖涓ら儴鍒嗗垎寮€鍒嗘瀽銆?/p>
#鎶婃暟鎹垎鎴愬叆鍥磋禌閮ㄥ垎鍜屾璧涢儴鍒?/p>
#鍙栧嚭鍏ュ洿璧涚粨鏉熸棩鏈熸渶鍚庝竴鍦烘瘮璧涙渶鍚庝竴涓€夋墜瀵瑰簲鐨刬ndex
index=wc_data[wc_data['date']=='2019/10/8'].index[-1]
#鍒嗗壊鍑哄叆鍥磋禌閮ㄥ垎
wc_pis=wc_data.iloc[:index+1,:]
#鍒嗗壊鍑烘璧涢儴鍒?/p>
wc_mg=wc_data.iloc[index+1:,:]
鍒拌繖涓€姝ヤ负姝紝鎴戜滑鐨勬暟鎹澶勭悊灏卞畬鎴愪簡銆?/p>
鎺㈢储鎬ф暟鎹垎鏋愬拰鍙鍖?/p>
鎴戜滑鍏堝鍏ュ洿璧涜繘琛屽垎鏋愩€?/p>
#鍏堢湅鐪嬪叆鍥磋禌鏈夊灏戦槦浼嶅弬鍔?/p>
wc_pis['team'].unique()
鍐嶆潵鐪嬬湅鍏ュ洿璧涗腑鍚勪綅缃嚭鍦烘鏁版渶澶氱殑鑻遍泟銆?/p>
#鍏ュ洿璧涗腑鍚勪綅缃娇鐢ㄦ渶澶氱殑涓変釜鑻遍泟鍙婂嚭鍦烘鏁?/p>
wc_pis_top=wc_pis[wc_pis['position']=='Top']['champion'].value_counts()[:3]
wc_pis_jungle=wc_pis[wc_pis['position']=='Jungle']['champion'].value_counts()[:3]
wc_pis_middle=wc_pis[wc_pis['position']=='Middle']['champion'].value_counts()[:3]
wc_pis_adc=wc_pis[wc_pis['position']=='ADC']['champion'].value_counts()[:3]
wc_pis_support=wc_pis[wc_pis['position']=='Support']['champion'].value_counts()[:3]
#鍙鍖?/p>
plt.figure(figsize=(20,5))
axe1=plt.subplot(1,5,1)
axe1.bar(np.arange(3),height=wc_pis_top,tick_label=wc_pis_top.index)
axe1.set_title('Top')
axe2=plt.subplot(1,5,2)
axe2.bar(np.arange(3),height=wc_pis_jungle,tick_label=wc_pis_jungle.index)
axe2.set_title('Jungle')
axe3=plt.subplot(1,5,3)
axe3.bar(np.arange(3),height=wc_pis_middle,tick_label=wc_pis_middle.index)
axe3.set_title('Middle')
axe4=plt.subplot(1,5,4)
axe4.bar(np.arange(3),height=wc_pis_adc,tick_label=wc_pis_adc.index)
axe4.set_title('ADC')
axe5=plt.subplot(1,5,5)
axe5.bar(np.arange(3),height=wc_pis_support,tick_label=wc_pis_support.index)
axe5.set_title('Support')
瀵逛簬ADC鍜岃緟鍔╀袱涓綅缃紝閫夋嫨浼间箮闈炲父鍥哄畾锛孉DC浣嶇疆闇炲拰鍗¤帋骞冲垎绉嬭壊锛岃緟鍔╀綅缃敜鐭冲拰娲涘悇鏈夊崈绉嬨€傚叾浠栦笁涓綅缃笂锛屾墦閲庝綅浼间箮鐩插儳浼氭垚涓洪槦浼嶉閫夛紝浣嗕笂鍗曞拰涓崟浣嶅鑻遍泟鐨勯€夋嫨鍋忓悜浼间箮骞朵笉鏄庢樉銆傚綋鐒跺悇涓綅缃閫夋嫨鏈€澶氱殑鑻遍泟涓€瀹氭槸褰撴椂鐗堟湰寮哄娍鎴栬兘鍙嶅埗鐗堟湰寮哄娍鑻遍泟鐨勮嫳闆勶紝鍦ㄦ垬闃熸瘮璧涗腑鑻遍泟閫夋嫨鐨勮嚜鐢卞害骞舵病鏈夋帓浣嶆父鎴忛珮锛屽湪鍚庨潰鐨勫垎鏋愭垜浠簲璇ヤ篃浼氱湅鍒拌繖浜涜嫳闆勫啀娆″嚭鐜板湪姝h禌鍚勪綅缃閫夋嫨鏈€澶氱殑鑻遍泟姒滃崟涓娿€備粠杩欎釜缁撴灉鏉ョ湅锛屽叏鐞冩€诲喅璧涘叆鍥磋禌涓悇浣嶇疆鍑虹幇鏈€澶氱殑鑻遍泟鍒嗗埆鏄細
#鐪嬬湅鍚勪釜闃熻儨鐜囨槸澶氬皯
win_rate_dict={}
for team in list(wc_pis['team'].unique()):
counts=wc_pis[wc_pis['team']==team]['result'].value_counts().sort_index()
win_rate=round(counts[counts.index[1]]/(counts[counts.index[0]]+counts[counts.index[1]]),2)
win_rate_dict[team]=win_rate
#鍙鍖?/p>
win_rates=[x for x in win_rate_dict.values()]
team=[x for x in win_rate_dict.keys()]
plt.figure(figsize=(20,5))
plt.bar(np.arange(12),height=win_rates,tick_label=team)
浠庣粨鏋滄垜浠彲浠ョ湅鍒拌儨鐜囪緝楂樼殑涓ゆ敮闃熶紞鍒嗗埆鏄細Clutch Gaming 鍜?Damwon Gaming锛岃繖涓ゆ敮闃熶紞涔熸槸鍒嗗埆鏉ヨ嚜瀹炲姏杈冨己鐨勫寳缇庤禌鍖哄拰闊╁浗璧涘尯銆傝儨鐜囧墠鍥涚殑鍥涙敮闃熶紞鍒嗗埆鏄細Clutch Gaming锛孌amwon Gaming锛孒ong Kong Attitude 鍜?Splyce锛岃繖鍥涙敮闃熶紞涔熸槸鍦ㄥ叆鍥磋禌鏉€鍏ユ璧涚殑鍥涙敮闃熶紞銆備粠杩欎釜缁撴灉鏉ョ湅锛屽叆鍥磋禌涓悇鏀槦浼嶈繕鏄瓨鍦ㄧ潃杈冨ぇ鐨勫疄鍔涘樊璺濓紝澶栧崱璧涘尯鐨勬垬闃熻儨鐜囩殕涓嶈冻鐧惧垎涔嬩簲鍗侊紝鑰屽疄鍔涜緝寮虹殑璧涘尯闃熶紞鑳滅巼鍙互杈惧埌鍙€曠殑鐧惧垎涔嬪叓鍗併€?/p>
鍥犱负鏁版嵁闆嗕腑娌℃湁姣忓満姣旇禌鐨凪VP閫夋墜鐨勬暟鎹紝鎴戜滑灏辩敤kda鏉ヤ唬鏇縈VP鏉ヨ瘎浼伴€夋墜鐨勮〃鐜般€傛垜浠幇鍦ㄦ潵鐪嬬湅鍦ㄥ叆鍥磋禌涓〃鐜版渶濂界殑浜斾綅閫夋墜鍒嗗埆鏄皝锛屼互鍙婁粬浠殑KDA鍒嗗埆涓哄灏戙€傛敞鎰忥紝鐢变簬鑻遍泟鑱旂洘瀹樻柟鍦ㄦ瘮璧涗腑浣跨敤鐨凨DA璁$畻鏂规硶涓猴細锛圞+A锛?D锛屼笉鍚屼簬鍦ㄦ父鎴忎腑璁$畻KDA鐨勬柟娉曪紝鍥犳鍦ㄨ繖閲屾垜浠绠桲DA鏃朵篃浣跨敤瀹樻柟鐨勮绠楁柟娉曘€?/p>
#鍏ュ洿璧涗腑琛ㄧ幇鏈€濂界殑閫夋墜锛堝钩鍧噆da鏈€楂橈級
KDA=[]
for k,d,a in zip(wc_pis['k'],wc_pis['d'],wc_pis['a']):
if d == 0:
kda=round((k+a)/(d+1),2)
else:
kda=round((k+a)/d,2)
KDA.append(kda)
wc_pis['KDA']=KDA
#鍗曠嫭鎶婇€夋墜鍜孠DA鎻愬彇鍑烘潵
wc_pis_player_kda=wc_pis.loc[:,['player','KDA']]
#璁$畻姣忎綅閫夋墜鐨勫钩鍧嘖DA
wc_pis_player_kda=round(wc_pis_player_kda.groupby('player').mean(),2)
wc_pis_player_kda.sort_values(by='KDA',ascending=False,inplace=True)
#鍏ュ洿璧涗腑KDA鍓嶄簲鐨勯€夋墜
wc_pis_player_kda[:5]
杩欎簲浣嶉€夋墜鍒嗗埆鏄細CG鐨凙DC锛欳ody Sun锛孲plyce鐨凙DC锛欿obbe锛孋G鐨勬墦閲庯細Lira锛孌WG鐨勬墦閲嶤anyon锛屼互鍙奃WG鐨勪腑鍗昐howmaker銆傚湪鍏ュ洿璧涗腑鍚稿紩浜嗕紬澶氱溂鐞冪殑CG涓婂崟HUNI鍗存病鍑虹幇鍦ㄨ繖浠芥鍗曚腑锛堝懠瀛愬摜瀵逛笉璧佛煓?馃檭 馃檭 锛夈€?/p>
鍏ュ洿璧涘彧鏄儹韬紝涓嬮潰璁╂垜杩涘叆鍒板姝h禌鐨勫垎鏋愩€?/p>
鎴戜滑鍏堟潵鐪嬬湅鍙傚姞姝h禌鐨勯兘鏈夊摢浜涢槦浼嶃€?/p>
#鍏堢湅鐪嬫璧涙湁澶氬皯闃熶紞鍙傚姞
wc_mg['team'].unique()
鍐嶆潵鐪嬬湅鍦ㄦ璧涗腑鍚勪綅缃娇鐢ㄦ渶澶氱殑鑻遍泟鍒嗗埆鏄摢浜涖€?/p>
#姝h禌涓悇浣嶇疆浣跨敤鏈€澶氱殑涓変釜鑻遍泟鍙婂嚭鍦烘鏁?/p>
wc_mg_top=wc_mg[wc_mg['position']=='Top']['champion'].value_counts()[:3]
wc_mg_jungle=wc_mg[wc_mg['position']=='Jungle']['champion'].value_counts()[:3]
wc_mg_middle=wc_mg[wc_mg['position']=='Middle']['champion'].value_counts()[:3]
wc_mg_adc=wc_mg[wc_mg['position']=='ADC']['champion'].value_counts()[:3]
wc_mg_support=wc_mg[wc_mg['position']=='Support']['champion'].value_counts()[:3]
#鍙鍖?/p>
plt.figure(figsize=(20,5))
axe1=plt.subplot(1,5,1)
axe1.bar(np.arange(3),height=wc_mg_top,tick_label=wc_mg_top.index)
axe1.set_title('Top')
axe2=plt.subplot(1,5,2)
axe2.bar(np.arange(3),height=wc_mg_jungle,tick_label=wc_mg_jungle.index)
axe2.set_title('Jungle')
axe3=plt.subplot(1,5,3)
axe3.bar(np.arange(3),height=wc_mg_middle,tick_label=wc_mg_middle.index)
axe3.set_title('Middle')
axe4=plt.subplot(1,5,4)
axe4.bar(np.arange(3),height=wc_mg_adc,tick_label=wc_mg_adc.index)
axe4.set_title('ADC')
axe5=plt.subplot(1,5,5)
axe5.bar(np.arange(3),height=wc_mg_support,tick_label=wc_mg_support.index)
axe5.set_title('Support')
鎴戜滑鏉ユ妸杩欎釜缁撴灉鍜屽叆鍥磋禌鐨勭粨鏋滄瘮杈冧竴涓嬶細棣栧厛鐪嬫暣浣擄紝鍚勪綅缃鑻遍泟鐨勯€夋嫨娆℃暟鍜屽叆鍥磋禌鐩告瘮宸窛宸茬粡鎷夊紑锛屼粠缁撴灉鏉ョ湅姣忎釜浣嶇疆閮芥湁涓€涓閫夎嫳闆勪笖涓庣浜岄『浣嶈嫳闆勮閫夋嫨娆℃暟鐩稿樊杈冨銆傚啀浠庡悇鍒嗚矾鍒嗘瀽锛屼笂鍗曡閫夋嫨娆℃暟鏈€澶氱殑鑻遍泟渚濈劧鏄埞闀匡紝鍦ㄥ叆鍥磋禌涓粨鏋滀腑鍑虹幇鐨勯硠楸间篃鍑虹幇鍦ㄤ簡鍓嶄笁鐨勪綅缃紱鎵撻噹浣嶇疆鐩插儳闆锋墦涓嶅姩渚濇棫鎺掑悕绗竴锛岃€岀浜屽悕浠庨浄鍏嬪鍙樻垚浜嗛厭妗讹紱涓崟浣嶇疆绗竴浠庨樋鍗′附鍙樻垚浜嗙憺鍏癸紱鑰屽湪ADC浣嶇疆涓婂崱鑾庡拰闇炴媺寮€浜嗗樊璺濓紝鍗¤帋琚€夋鏁拌揪鍒颁簡50娆′箣澶氾紝閫犳垚杩欎釜缁撴灉鐨勫師鍥犱篃鍙兘鏄洜涓哄湪ban/pick鏃堕湠娲涚粍鍚堝叾涓€琚玝an鎴栬閫夊鑷撮湠鐨勪紭鍏堢骇鏈夋墍涓嬮檷锛涘湪杈呭姪浣嶆繁娴锋嘲鍧︿竴璺冩垚涓虹涓€锛岃€屾礇鍜岄敜鐭冲彉涓虹浜屽拰绗笁锛屽綋鐒堕儴鍒嗗師鍥犱篃鍜屽墠闈㈡彁鍒扮殑闇炴礇缁勫悎鏈夊叧銆備粠杩欎釜缁撴灉鏉ョ湅锛屽湪姝h禌涓紝鍚勪綅缃嚭鐜版渶澶氱殑鑻遍泟鍒嗗埆涓猴細
鐪嬪畬浜嗚閫夋嫨鏈€澶氱殑鑻遍泟锛屾垜浠竴鏍疯鐪嬬湅琚玝an鏈€澶氱殑鑻遍泟銆?/p>
#鍐嶆潵瑙傚療涓€涓嬫璧涗腑鍚勮疆娆¤ban娆℃暟鏈€澶氱殑鑻遍泟鍒嗗埆鏄皝
ban_champ_dict={}
ban_round=['ban1','ban2','ban3','ban4','ban5']
for each in ban_round:
counts=wc_mg[each].value_counts()[:3]
ban_champ_dict[each]=counts
#鍙鍖?/p>
plt.figure(figsize=(20,5))
axe1=plt.subplot(1,5,1)
axe1.bar(np.arange(3),height=ban_champ_dict['ban1']/5,tick_label=ban_champ_dict['ban1'].index)
axe1.set_title('Ban1')
axe2=plt.subplot(1,5,2)
axe2.bar(np.arange(3),height=ban_champ_dict['ban2']/5,tick_label=ban_champ_dict['ban2'].index)
axe2.set_title('Ban2')
axe3=plt.subplot(1,5,3)
axe3.bar(np.arange(3),height=ban_champ_dict['ban3']/5,tick_label=ban_champ_dict['ban3'].index)
axe3.set_title('Ban3')
axe4=plt.subplot(1,5,4)
axe4.bar(np.arange(3),height=ban_champ_dict['ban4']/5,tick_label=ban_champ_dict['ban4'].index)
axe4.set_title('Ban4')
axe5=plt.subplot(1,5,5)
axe5.bar(np.arange(3),height=ban_champ_dict['ban5']/5,tick_label=ban_champ_dict['ban5'].index)
axe5.set_title('Ban5')
棣栧厛鏉ョ湅绗竴ban锛屾綐妫ban娆℃暟杈惧埌浜嗘儕浜虹殑鎺ヨ繎70娆★紝璇佹槑娼樻.鍦ㄥ綋鏃剁殑鐗堟湰宸茬粡杈惧埌浜嗛潪ban蹇呴€夌殑绋嬪害锛岃鏄庤嫳闆勮仈鐩熺殑璁捐甯堜滑鍦ㄥ娼樻.鐨勫钩琛℃€ц璁′笂杩樺緱澶氫笅鐐瑰姛澶€傜浜宐an濂囦簹濞滀綅灞呮棣栵紝鍏舵鏄樋鍗′附鍜岃緵寰锋媺銆傝€屼粠绗笁ban涔嬪悗鍚勮嫳闆勮ban鐨勬鏁板氨鐩稿鍧囪 浜嗚澶氾紝娉ㄦ剰闃垮崱涓藉悓鏃跺嚭鐜板湪浜嗙涓€锛岀浜屽拰绗笁ban鐨勫墠涓夊悕涔嬪垪锛岃瘉鏄庡湪褰撴椂鐨勭増鏈樋鍗′附涔熺畻鏄竴涓瘮杈冨己鍔跨殑鑻遍泟銆?/p>
涓嬮潰鎴戜滑寮€濮嬭浆绉诲埌鍒版父鎴忚繘琛屼腑浜х敓鐨勬暟鎹€?/p>
鍏堟潵鐪嬬湅閲庢€暟鎹笂鑳界粰鎴戜滑浠€涔堝惎鍙戝惂銆?/p>
#鍦哄潎閲庢€嚮鏉€鏈€楂樼殑鍓嶄簲鍚嶉€夋墜
#鍏堟妸閫夋墜鍜屽嚮鏉€閲庢€暟鍗曠嫭鎻愬彇鎴愪负涓€涓狣ataFrame
monster_killed_df=wc_mg.loc[:,['player','monsterkills']]
#璁$畻姣忎綅閫夋墜骞冲潎鍑绘潃閲庢€暟
monster_killed_df=monster_killed_df.groupby(['player']).mean()
#瀵瑰钩鍧囧嚮鏉€閲庢€暟鎺掑簭
monster_killed_df.sort_values(by='monsterkills',ascending=False,inplace=True)
#鎻愬彇鍑哄墠浜斿悕閫夋墜鍜屽搴斿钩鍧囧嚮鏉€閲庢€暟
top_5_players=monster_killed_df.index[:5]
top_5_monster_killed=monster_killed_df['monsterkills'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_monster_killed,tick_label=top_5_players)
鍦哄潎鍑绘潃閲庢€暟鍓嶄簲鍚嶉€夋墜鐩稿樊涓嶅锛岀涓€鍚嶆槸Griffin鐨凾arzan閫夋墜锛岀浜屽悕鏄疓AM鐨凩evi锛堣秺鍗楁墦閲庡睘瀹炴湁鐐逛笢瑗筐煠?馃 馃 锛夛紝绗笁鍚嶆槸鏇胯ˉ涓婂満鐨処G鎵撻噹Leyan锛屽洓浜斿悕鍒嗗埆鏄疉HQ鐨凙lex鍜孌WG鐨凜anyon銆?/p>
鎴戜滑閮界煡閬撲綔涓烘墦閲庯紝涓嶅厜瑕佹敞閲嶅湪鑷閲庡尯鐨勫埛閲庢晥鐜囷紝鏄笉鏄篃寰楀幓瀵规柟閲庡尯鍋风偣涓滆タ浠ユ鏉ョ粰瀵规柟鎵撻噹鏂藉姞鍘嬪姏馃槑 馃槑 馃槑 锛岄偅涔堟垜浠氨鏉ョ湅鐪嬪湪鏁屾柟閲庡尯鍋蜂笢瑗挎渶澶氱殑鍓嶄簲鍚嶉€夋墜鏄皝銆?/p>
#鍦哄潎瀵规柟閲庡尯閲庢€嚮鏉€鏈€楂樼殑鍓嶄簲鍚嶉€夋墜
monster_killed_df=wc_mg.loc[:,['player','monsterkillsenemyjungle']]
monster_killed_df=monster_killed_df.groupby(['player']).mean()
monster_killed_df.sort_values(by='monsterkillsenemyjungle',ascending=False,inplace=True)
top_5_players=monster_killed_df.index[:5]
top_5_monster_killed=monster_killed_df['monsterkillsenemyjungle'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_monster_killed,tick_label=top_5_players)
杩欎釜缁撴灉灏遍潪甯哥伒鎬т簡锛屽厖鍒嗗睍绀轰簡浜氭床鎵撻噹鐨勭壒鐐癸紝涓婃鐨勫墠浜斿悕鍏ㄩ儴鏄簹娲叉墦閲庯紝浠庨珮鍒颁綆渚濇鏄細FPX鐨凾ian锛孏AM鐨凩evi锛孲KT鐨凜lid锛孖G鐨凩eyan浠ュ強DWG鐨凜anyon銆傝繖鍏呭垎璇存槑浜嗕簹娲叉墦閲庡浜庨噹鍖虹殑渚电暐鎰忓浘鏄潪甯搁珮鐨勶紝鑰屾娲插拰鍖楃編鍦板尯鐨勬墦閲庡湪杩欎竴鐐逛笂浼间箮骞舵病鏈夊紩璧疯冻澶熺殑閲嶈銆?/p>
涓嬮潰鎴戜滑鍐嶆潵鐪嬬湅鍦哄潎琛ュ垁鏁板墠浜旂殑閫夋墜鍒嗗埆鏄皝銆?/p>
#鍦哄潎琛ュ垁鏈€楂樼殑鍓嶄簲鍚嶉€夋墜
minion_killed_df=wc_mg.loc[:,['player','minionkills']]
minion_killed_df=minion_killed_df.groupby(['player']).mean()
minion_killed_df.sort_values(by='minionkills',ascending=False,inplace=True)
top_5_player=minion_killed_df.index[:5]
top_5_minion_killed=minion_killed_df['minionkills'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_minion_killed,tick_label=top_5_player)
姣笉鎰忓锛屼笂姒滅殑浜斾綅鍏ㄩ儴涓哄悇闃烝DC閫夋墜锛屾垜浠兘鐭ラ亾ADC鍦ㄥ墠鏈熺浉瀵瑰急鍔匡紝闇€瑕佸拰骞宠ˉ鍒€鏉ヤ负鍚庢湡鐨勬寔缁€т激瀹宠緭鍑哄仛濂介摵鍨€傚悓鏃跺湪鍚庢湡ADC涔熻捣鍒版竻鐞?鎺ㄨ繘鍚勮矾鍏电嚎鐨勪富瑕佷綔鐢ㄣ€傝櫧鐒跺悇浣嶉€夋墜鐨勫満鍧囪ˉ鍒€鏁扮浉宸笉澶э紝浣嗕綔涓虹涓€鍚嶇殑RNG闃烝DC Uzi杩樻槸鍜屽悗鍑犱綅鎷夊紑浜嗕竴鐐瑰樊璺濄€傚嵆浣夸竴鐩存湁浜哄Uzi鍚冧笁璺叺绾胯川鐤戯紝浣嗕笉寰椾笉璇碪zi鍦ㄥ悗鏈熺殑杈撳嚭鑳藉姏纭疄涓嶅灏忚銆?/p>
闄や簡琛ュ垁锛岃閲庡湪娓告垙涓紝鐗瑰埆鏄禌鍦轰笂鐨勪綔鐢ㄥ悓鏍烽噸瑕併€傚湪璧涘満涓婂悇鎴橀槦閰嶅悎鏃犵紳琛旀帴鐨勬儏鍐典笅锛岃閲庣◢寰湁鐐圭枏婕忓氨鍙兘浼氬鑷翠竴涓槦鍙嬭鍑绘潃鐢氳嚦璁╁鏂规粴璧烽洩鐞冦€傞偅涔堟垜浠氨鏉ョ湅鐪嬶紝鍦哄潎瀹夋彃瑙嗛噹鏁版渶澶氱殑鍓嶄簲浣嶆槸璋併€?/p>
#鍦哄潎鎻掔溂鏁版渶楂樺墠浜斿悕
wards_df=wc_mg.loc[:,['player','wards']]
wards_df=wards_df.groupby(['player']).mean()
wards_df.sort_values(by='wards',ascending=False,inplace=True)
top_5_player=wards_df.index[:5]
top_5_wards_placed=wards_df['wards'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_wards_placed,tick_label=top_5_player)
姝f墍璋撲粈涔堜汉骞蹭粈涔堟椿锛屾彃鐪兼暟鍓嶄簲浣嶄篃姣笉渚嬪鐨勮杈呭姪閫夋墜鍖呮徑銆?/p>
鍓嶅嚑椤瑰垎鏋愪腑鍚勭粨鏋滃墠浜斾綅閫夋墜涔嬮棿閮芥病鏈夊嚭鐜版槑鏄剧殑宸窛锛岃繖璇佹槑涓栫晫璧涘満涓婂己闃熶箣闂寸殑姣旀嫾骞朵笉鏄摢涓槑鏄熼€夋墜鐨勫疄鍔涳紝鑰屾槸鍥㈤槦涔嬮棿鐨勯厤鍚堝拰涓村満搴斿彉鑳藉姏锛岃€岃繖涔熸槸鐢电珵鏈€绮惧僵鐨勫湴鏂广€?/p>
涓嬮潰灏卞埌浜嗘瘡鍦烘父鎴忕粨鏉熷繀浼氬嚭鐜扮殑閫犳垚浼ゅ/鎵垮彈浼ゅ缁熻鏁版嵁鐜妭銆?/p>
鎴戜滑鍏堟潵鐪嬬湅姝h禌涓満鍧囦激瀹虫渶楂樼殑鍓嶄簲鍚嶉€夋墜閮芥槸璋併€?/p>
#鍦哄潎浼ゅ鏈€楂樺墠浜斿悕
damage_df=wc_mg.loc[:,['player','dmgtochamps']]
damage_df=damage_df.groupby(['player']).mean()
damage_df.sort_values(by='dmgtochamps',ascending=False,inplace=True)
top_5_player=damage_df.index[:5]
top_5_damage_to_champion=damage_df['dmgtochamps'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_damage_to_champion,tick_label=top_5_player)
杩欎釜缁撴灉寰堟湁瓒o紝鎴戜滑鏉ヤ粩缁嗗垎鏋愪竴涓嬨€傜涓€鍚嶆槸C9鐨凙DC閫夋墜Sneaky锛岃€岃繖浣嶉€夋墜鍗存病鏈夊嚭鐜板湪琛ュ垁鏁板墠浜旂殑闃熷垪涓紝杩欏氨鏄紶璇翠腑鐨勨€滃悆鐨勬槸鑽夛紝鎸ょ殑鏄ザ鈥濆瀷ADC锛岃€屼笖璇ラ€夋墜鐢氳嚦姣旂浜屽悕鍦哄潎楂樺嚭浜嗙害4000鐐逛激瀹冲€笺€傜浜屽悕鏄疌G鐨勪笂鍗曢€夋墜Huni锛堝懠瀛愬摜缁堜簬鏉ヤ簡锛夛紝鍦ㄥ悗闈㈢殑鍒嗘瀽涓ぇ瀹朵細鐪嬪埌CG涓€鍦洪兘娌¤耽杩囷紝浣咹uni鐨勫満鍧囦激瀹冲嵈楂樺眳鎵€鏈夐€夋墜鐨勭浜岋紙鍛煎瓙鍝ヨ〃绀洪槦鍙嬭彍閫煎甫涓嶅姩馃檮 馃檮 馃檮 锛夈€傜涓夊悕灏辨槸鎴戜滑鐨勨€滀紬绁炰箣绁炩€漇hy鍝ワ紙瀵逛笉璧锋垜鏄疭hy鍚桂煓?馃檭 馃檭 锛夛紝铏界劧鍦哄潎浼ゅ浠呮浜嶩uni锛屼絾涓や綅閫夋墜涓嶇鏄浜庡洟鎴樼殑璐$尞杩樻槸瀵圭嚎鎶€宸т笂瀛板己瀛板急搴旇涓嶇敤鎴戝璇翠簡銆傜鍥涘悕灏辨槸鍜岀涓€鍚嶅垰濂界浉鍙嶇被鍨嬬殑ADC閫夋墜RNG鐨刄zi锛岃櫧鐒惰ˉ鍒€鏁颁綅鍒楃涓€锛屽満鍧囦激瀹充篃楂樺眳鍓嶄簲锛屼絾鍜孲neaky杩欑瓒呯骇缁忔祹瀹炴儬鍨婣DC杩樻湁涓€瀹氬樊璺濄€傜浜斿悕鏄潵鑷狫 Team鐨勪腑鍗曢€夋墜FoFo锛岃€屼粬涔熸槸杩欎唤姒滃崟涓敮涓€鐨勪腑鍗曢€夋墜銆?/p>
鎴戜滑鍐嶆潵鐪嬬湅鍦ㄦ壙鍙椾激瀹虫柟闈㈠墠浜旂殑閫夋墜閮芥湁鍝簺銆?/p>
#鍦哄潎鎵垮彈浼ゅ鏈€楂樺墠浜斿悕
damage_share_df=wc_mg.loc[:,['player','dmgshare']]
damage_share_df=damage_share_df.groupby(['player']).mean()
damage_share_df.sort_values(by='dmgshare',ascending=False,inplace=True)
top_5_player=damage_share_df.index[:5]
top_5_damage_share=damage_share_df['dmgshare'][:5]
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
plt.bar(np.arange(5),height=top_5_damage_share,tick_label=top_5_player)
RNG鐨凙DC閫夋墜Uzi鎰忓鍦板嚭鐜板湪浜嗚繖浠芥鍗曠殑绗竴浣嶏紝鍦ㄤ笘鐣岃禌鍦轰笂浣滀负涓€涓狝DC鍘婚€佺殑鎯呭喌涓嶅お鍙兘鍑虹幇锛岄偅灏卞彧鑳借鏄洜涓篣zi鍦ㄥ悗鏈熻秴寮虹殑carry鐨勮兘鍔涗娇寰椾粬鎴愪负浜嗗鎵嬮泦鐏殑棣栬鐩爣銆傝€屼激瀹冲€肩浜岄珮鐨凥uni鍦ㄦ壙鍙椾激瀹虫鍗曚腑涔熸帓鍦ㄤ簡绗簩锛堝彲鎴戝嵃璞′腑鍛煎瓙鍝ュソ鍍忎笉鎬庝箞鐜╁潶鍏嬸煒?馃槒 馃槒 锛夈€?/p>
鎺ヤ笅鏉ユ垜浠啀鏉ョ湅鐪嬪湪涓栫晫璧涘満涓婏紝绾㈣摑鏂圭殑閫夋嫨鍒板簳瀵规父鎴忕殑鑳滆礋鏈夋病鏈夊奖鍝嶃€?/p>
#鍦ㄦ璧涗腑绾㈣摑鏂圭殑鑳滅巼鍒嗗埆鏄灏?/p>
side_df=wc_mg.loc[:,['side','result']]
win_count=side_df[side_df['side']=='Red']['result'].value_counts().sort_index()
win_rate=round(win_count[win_count.index[1]]/(win_count[win_count.index[1]]+win_count[win_count.index[0]]),2)
#瀵圭粨鏋滆繘琛屽彲瑙嗗寲
plt.figure(figsize=(6,6))
sizes=[1-win_rate,win_rate]
labels=('Blue Team','Red Team')
plt.pie(sizes,labels=labels,autopct='%1.0f%%')
铏界劧鏈変紬澶氱殑鏂囩珷鎴栬€呰В璇撮兘浼氬垎鏋愮孩钃濇柟鐨勯€夋嫨瀵规父鎴忕粨鏋滅殑褰卞搷锛屼絾浠庣粨鏋滀笂鏉ョ湅铏界劧绾㈡柟鑳滅巼姣旇摑鏂圭◢楂橈紝浣嗘槸涔熶笉瓒充互杈惧埌浣垮弻鏂归槦浼嶆媺寮€宸窛鐨勫湴姝ャ€?/p>
涓嬮潰鎴戜滑鍐嶄粠鍚勬敮闃熶紞鐨勮搴︽潵鐪嬩竴涓嬪湪鍏ㄧ悆鎬诲喅璧涗腑鍚勬敮闃熶紞鐨勮儨鐜囧垎鍒槸澶氬皯銆?/p>
#鐪嬬湅鍚勪釜闃熻儨鐜囨槸澶氬皯
win_rate_dict={}
for team in list(wc_mg['team'].unique()):
counts=wc_mg[wc_mg['team']==team]['result'].value_counts().sort_index()
if len(counts) == 2:
win_rate=round(counts[counts.index[1]]/(counts[counts.index[0]]+counts[counts.index[1]]),2)
else:
if counts.index == 0:
win_rate=0
else:
win_rate=1
win_rate_dict[team]=win_rate
#涓哄悇闃熻儨鐜囧垱寤轰竴涓狣ataFrame骞舵寜鐓ц儨鐜囬檷搴忔帓搴?/p>
win_rates=[x for x in win_rate_dict.values()]
team=[x for x in win_rate_dict.keys()]
win_rate_df=pd.DataFrame()
win_rate_df['team']=team
win_rate_df['win_rate']=win_rates
win_rate_df.sort_values(by='win_rate',ascending=False,inplace=True)
#瀵硅儨鐜囨寜鐓ч珮浣庢帓搴忓彲瑙嗗寲
win_rates=list(win_rate_df['win_rate'])
team=list(win_rate_df['team'])
plt.figure(figsize=(30,5))
plt.bar(np.arange(len(team)),height=win_rates)
plt.xticks(np.arange(len(team)),team,rotation=-45,ha='left')
plt.rc('font',size=18)
浣滀负S9鐨勫啝鍐涳紝FPX鐨勮儨鐜囬珮杈捐繎80%锛岃€屼袱鏀煩鍥介槦浼峉KT鍜孏riffin绱ч殢鍏跺悗锛屽喅璧涗腑FPX鐨勫鎵婫2浠呬綅浜庣鍥涖€傛渶鍚庝笁鏀槦浼岰G锛孉HQ鍜孒KA鏇存槸涓€鍦鸿儨鍒╅兘娌℃湁寰楀埌銆?/p>
鏈€鍚庯紝璁╂垜浠潵鐪嬬湅鍦ㄦ璧涗腑琛ㄧ幇鏈€濂界殑鍓嶅崄浣嶉€夋墜锛堝悓鏍蜂娇鐢↘DA鏈€涓哄垽鏂爣鍑嗭級銆?/p>
#姝h禌涓〃鐜版渶濂界殑閫夋墜锛堝钩鍧噆da鏈€楂橈級
KDA=[]
for k,d,a in zip(wc_mg['k'],wc_mg['d'],wc_mg['a']):
if d == 0:
kda=round((k+a)/(d+1),2)
else:
kda=round((k+a)/d,2)
KDA.append(kda)
wc_mg['KDA']=KDA
#鍗曠嫭鎶婇€夋墜鍜孠DA鎻愬彇鍑烘潵
wc_mg_player_kda=wc_mg.loc[:,['player','KDA']]
#璁$畻姣忎綅閫夋墜鐨勫钩鍧嘖DA
wc_mg_player_kda=round(wc_mg_player_kda.groupby('player').mean(),2)
wc_mg_player_kda.sort_values(by='KDA',ascending=False,inplace=True)
#姝h禌涓璌DA鍓嶅崄鐨勯€夋墜
wc_mg_player_kda[:10]
鍦↘DA鎺掑悕鍓嶅崄鐨勯€夋墜涓湁浜斾綅鏉ヨ嚜鎴戜滑鐨凩PL璧涘尯锛岃繖涔熷啀涓€娆¤瘉鏄庝簡鎴戜滑LPL璧涘尯鐨勫疄鍔涖€?/p>
聽
鏁版嵁寤烘ā
鍦ㄨ繖涓€閮ㄥ垎瑕佸仛鐨勫伐浣滄槸浣跨敤绾挎€у垽鍒垎鏋愶紙Linear Discriminant Analysis锛夋潵甯垜浠鏁版嵁杩涜鍒嗙被銆傚熀鏈€濇兂鏄細姣忔敮闃熶紞閮芥湁浜斾釜浣嶇疆锛岃繖鏍峰氨鍙互鎶婃暟鎹垎涓轰簲绫伙紝鑰屾暟鎹泦涓殑鐗瑰緛杈冨浣跨敤鍐崇瓥鏍戞晥鏋滀笉浣筹紝鍚屾椂娉ㄦ剰鍒拌繖鏄竴涓湁鐩戠潱绫荤殑闂锛岄偅涔堟垜浠氨鍙互浣跨敤绾挎€у垽鍒垎鏋愭潵甯垜浠В鍐宠繖绫婚棶棰樸€傜嚎鎬у垽鍒垎鏋愭槸涓€绉嶆妸楂樼淮绌洪棿鐨勬暟鎹姇褰卞埌浣庣淮绌洪棿浠庤€屾洿濂藉湴杩涜鍖哄垎鐨勬柟娉曪紝绠€鍗曠殑鏉ヨ绾挎€у垽鍒垎鏋愯鍋氱殑灏辨槸浣库€滄姇褰卞悗绫诲唴鏂瑰樊鏈€灏忥紝绫婚棿鏂瑰樊鏈€澶р€濈殑浼樺寲鏂规銆?/p>
鍦ㄤ娇鐢ㄧ嚎鎬у垽鍒垎鏋愪箣鍓嶆湁涓€涓瑙e喅鐨勯棶棰橈細鎴戜滑鎵€浣跨敤鐨勬ā鍨嬪苟涓嶈璇嗗瓧绗︿覆绫诲瀷鐨勬暟鎹紝涔熷氨鏄鏈哄櫒骞朵笉鏄庣櫧鏂囧瓧鐨勬剰涔夛紝鎵€浠ユ垜浠鍏堝府瀹冪炕璇戞垚瀹冨彲浠ョ悊瑙g殑鏁板瓧銆傝繖閲屽氨瑕佷娇鐢ㄥ埌鐗瑰緛宸ョ▼涓緢閲嶈鐨勭殑鏂规硶锛氱紪鐮併€傚父鐢ㄧ殑缂栫爜鏂规硶涓猴細瀹氬簭缂栫爜锛屽垎绠辩紪鐮佸拰鐙儹缂栫爜銆傚叿浣撻棶棰樺叿浣撳垎鏋愶紝鍏堟潵鐪嬬湅鎴戜滑瀛楃涓茬被鍨嬬殑鏁版嵁閮芥湁鍝簺鍚э細
#鎵惧嚭鍘熸暟鎹泦涓殑object绫诲瀷瀛楁
object_columns=wc_data.columns[wc_data.dtypes=='object']
#鐪嬬湅object绫诲瀷瀛楁鏈夊摢浜?/p>
object_columns
閫氳繃瀛楅潰鎰忔€濆ぇ瀹跺簲璇ヨ兘鐚滃埌姣忎釜瀛楁鍒嗗埆浠h〃浠€涔堬紝鍦ㄨ繖褰撲腑闈炲父璁╀汉鐤戞儜鐨勬槸鈥榝baron鈥欙紝鈥榝barontime鈥欙紝鈥榲isiblewardclearrate鈥欙紝鈥榠nvisiblewardclearrate鈥欒繖鍑犻」鐪嬩技搴旇鏄暣鏁板瀷鎴栨诞鐐瑰瀷鐨勬暟鎹珶鐒舵槸瀛楃涓茬被鍨嬨€備簬鏄垜灏卞幓鍘熸暟鎹泦涓瀵熶簡涓€涓嬶紝鈥榝baron鈥欏拰鈥榝barontime鈥欑殑鏁版嵁纭疄鍏ㄩ儴鏄暟瀛楃被鍨嬶紝鑰屸€榲isiblewardclearrate鈥欏拰invisiblewardclearrate鈥樹袱涓瓧娈典笅鐨勬暟鎹叏閮ㄤ负绌猴紝浣嗚繖涓や釜瀛楁鍦ㄤ箣鍓嶅鐞嗙己澶卞€兼椂鍗存樉绀烘病鏈夌己澶卞€兼垜鎯冲彲鑳芥槸鍥犱负鍘熸暟鎹泦涓繖涓や釜瀛楁涓嬪~鍏呮槸涓€涓€?鈥欙紝涔熷氨鏄┖鏍硷紝鎵€浠ヨ褰撴垚浜嗗瓧绗︿覆绫诲瀷涓旀病鏈夌己澶卞€笺€傛悶娓呮浜嗚繖涓棶棰樺悗鎴戜滑灏卞彲浠ョ潃鎵嬭В鍐充簡銆?/p>
#鎶奻baron鍜宖barontime涓や釜瀛楁杞崲鎴愭诞鐐瑰瀷
wc_data['fbaron']=wc_data['fbaron'].astype(float)
wc_data['fbarontime']=wc_data['fbarontime'].astype(float)
#鎶奷ate锛寁isiblewardclearrate锛宨nvisiblewardclearrate瀛楁鍒犲幓
wc_data.drop(['date','visiblewardclearrate','invisiblewardclearrate'],axis=1,inplace=True)
涔嬫墍浠ユ妸date杩欎竴鍒椾篃鍒犲幓锛屼富瑕佹槸鑰冭檻鍒拌繖涓€鍒楀鎴戜滑妯″瀷鐨勫垎绫昏兘鍔涘苟娌℃湁褰卞搷銆?/p>
#鍐嶇湅鐪嬬幇鍦╫bject绫诲瀷瀛楁鏈夊摢浜?/p>
object_columns=wc_data.columns[wc_data.dtypes=='object']
object_columns
澶勭悊瀹屽悗鐨勭粨鏋滄樉鐒跺氨绗﹀悎鎴戜滑棰勬湡浜嗭紝杩欐椂鎴戜滑灏卞彲浠ヨ€冭檻缂栫爜闂浜嗐€傞€氳繃瑙傚療杩欏嚑涓瓧娈碉紝鎴戜滑浼氬彂鐜拌繖浜涘瓧娈典腑鏈夊嚑涓瓧娈典腑鍑虹幇浜嗙壒鍒鐨勪笉鍚屾暟鎹紝濡傦細player锛宑hampion绛夛紝鑻ュ杩欎簺鍒楄繘琛岀嫭鐑紪鐮佹垜浠殑鏁版嵁闆嗕細鍛堢幇鍑虹壒鍒█鐤忕殑鐘舵€侊紝杩欐樉鐒朵笉鏄垜浠笇鏈涚湅鍒扮殑锛屽洜姝ゆ垜浠氨浣跨敤鏁堟灉鏇村ソ鐨勫畾搴忕紪鐮併€傦紙浣嗗畾搴忕紪鐮佷篃鏈夎嚜宸辩殑闂锛屾瘮濡傝繖浜涘瓧娈典笅鐨勬暟鎹苟娌℃湁鏄庢樉鐨勪紭鍏堥『搴忥紝浣嗕娇鐢ㄥ畾搴忕紪鐮佸氨浼氬嚭鐜拌繖涓棶棰橈紝鍥犳鍦ㄨ繘琛屾暟鎹垎鏋愭椂鏈夋椂骞舵病鏈夋爣鍑嗙瓟妗堬紝鏇撮噸瑕佺殑鏄潈琛★級
#瀵煎叆LabelEncoder鍖?/p>
from sklearn.preprocessing import LabelEncoder
#浣跨敤LabelEncoder鎶妎bject绫诲瀷鏁版嵁缂栧彿
le=LabelEncoder()
for each in object_columns:
wc_data[each]=le.fit_transform(wc_data[each])
鐜板湪鎴戜滑宸茬粡澶勭悊瀹屼簡鏁版嵁闆嗭紝鍙互寮€濮嬭繘琛屽缓妯′簡銆?/p>
#瀵煎叆妯″瀷LDA锛屽垎鍓叉暟鎹泦鍖咃紝琛¢噺妯″瀷鏁堟灉鐨刟ccuracy_score
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
clf=LinearDiscriminantAnalysis()
X=wc_data.drop(['position'],axis=1)
y=wc_data['position']
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)
clf.fit(X_train,y_train)
result=clf.predict(X_test)
#浣跨敤鍑嗙‘鐜囪 閲忔ā鍨嬫晥鏋?/p>
accuracy_score(y_test,result)
鎴戜滑浣跨敤LDA妯″瀷鐨勯粯璁ゅ弬鏁帮紙SVD浣滀负solver锛夊緱鍒扮殑鍑嗙‘鐜囨槸鎺ヨ繎92%锛岃繖涓粨鏋滆繕涓嶉敊锛屼絾鏄€氳繃鍙傛暟璋冩暣鎴栬€呭鍘熸暟鎹泦杩涗竴姝ュ鐞嗘湁鍙兘寰楀埌鏇村ソ鐨勭粨鏋溿€?/p>
鎺ヤ笅鏉ユ垜浠妯″瀷鍋氳繘涓€姝ュ垎鏋愶紝鍏堟潵鐪嬬湅explained variance ratio锛岃繖涓粨鏋滆〃鏄庢垜浠缁冪殑LDA妯″瀷鐨勫悇涓猚omponent瀵规暣浣撶殑鏂瑰樊瑙i噴搴︺€?/p>
#鐪嬬湅LDA鐨勫悇涓猚omponent鐨別xplained varaince ratio
clf.explained_variance_ratio_
鍥犱负鎴戜滑娌℃湁璁惧畾LDA妯″瀷鐨刵_component鍙傛暟锛屾墍浠omponent鐨勪釜鏁版槸妯″瀷鑷繁鍐冲畾鐨勶紝涔熷氨鏄痭_class-1=5-1=4銆傚湪4涓猚omponent涓紝鏈€楂樼殑瑙i噴搴︿负55%锛屾渶灏忕殑浠呬负0.4%锛岃繖鍥涗釜瑙i噴搴﹀姞璧锋潵鐨勫拰涓?銆?/p>
鐪嬭繃浜哻omponent瀵规暣浣撴柟宸殑瑙i噴搴︼紝鍐嶆潵鐪嬬湅姣忎釜鐗瑰緛瀵筁DA鍒嗙被璧峰埌浜嗗澶х殑浣滅敤锛?/p>
#鎶婂悇瀛楁鐨刢oeffcient鍋氭垚DataFrame淇濆瓨璧锋潵鏂逛究涓嬩竴姝ュ垎鏋?/p>
coefficients=pd.DataFrame(clf.coef_)
#鎵惧嚭coefficient鏈€楂樼殑涓変釜鐗瑰緛骞舵墦鍗板嚭鏉?/p>
for position in range(0,5):
sorted_coefficient=coefficients.iloc[position,:].sort_values(ascending=False)
columns=wc_data.columns[sorted_coefficient.index[0:3]]
print('Columns with highest coefficient for position ',position,' :',columns)
杩欓噷postiontion 0 涓篈DC锛宲ostion 1 涓烘墦閲庯紝postion 2 涓轰腑鍗曪紝position 3 涓鸿緟鍔╋紝position 4 涓轰笂鍗曘€?/p>
鈥榙mgshare鈥欙細鎵垮彈浼ゅ姣斾緥
鈥榢pm鈥欙細姣忓垎閽熷嚮鏉€鏁?/p>
鈥榓irdrake鈥欙細椋庨緳鍑绘潃鏁?/p>
鈥榝btime鈥欙細棣栨潃鍙戠敓鏃堕棿
鈥榳ardkills鈥欙細娓呴櫎瑙嗛噹鏁?/p>
鈥榳pm鈥欙細姣忓垎閽熷畨缃閲庢暟
鈥榳ards鈥欙細鎬绘斁缃閲庢暟
鈥榪uadras鈥欙細鍥涙潃娆℃暟
鈥榤onsterkillsenemyjungle鈥欙細鏁屾柟閲庢€嚮鏉€鏁?/p>
杩欎釜缁撴灉鏄剧劧涓嶅お濂界悊瑙o紝鍍忊€榓irdrakes鈥欙紝鈥榪uadras鈥欙紝鈥榝btime鈥欒繖绫荤壒寰佹垜浠樉鐒舵槸涓嶄細鎶婂畠浠拰鏌愪釜浣嶇疆鑱旂郴璧锋潵锛岃€屽儚鈥榙mgshare鈥欒繖涓壒寰佸湪瀵逛笁涓綅缃鍒嗙被浣滅敤閮芥槸鏈€楂樼殑锛岃繖濂藉儚涔熷拰鎴戜滑骞冲父瀵规父鎴忕殑鐞嗚В涓嶅お涓€鏍枫€備絾鏄篃鍍忔垜涔嬪墠鎻愬埌杩囩殑锛岃繖涓ā鍨嬭繕鏈夎繘姝ョ殑绌洪棿锛岃€屼笖鎴戞墍浣跨敤鐨勬暟鎹泦鏁版嵁骞朵笉鏄壒鍒厖瓒筹紝濡傛灉浣跨敤鏇村ぇ鐨勬暟鎹泦鍙兘鏁堟灉浼氭洿濂姐€備簬鏄垜灏卞紑濮嬫€濊€冿細濡傛灉鎶婃垜浠涓哄鍒嗙被鏈夌敤鐨勬暟鎹斁鍦ㄤ竴璧峰啀璁粌涓€涓ā鍨嬶紝浼氫笉浼氬噯纭巼姣旇繖涓ā鍨嬭楂樺憿锛?/p>
#鎶婃垜浠涓烘湁鐢ㄧ殑瀛楁鎻愬彇鎴愪竴涓柊鐨凞ataFrame
wc_new=wc_data.loc[:,['position','player','champion','k','d','a','dmgtochamps','dmgshare','wards','minionkills','monsterkills']]
#瑙傚療涓€涓嬫柊鐨凞ataFrame
wc_new.head()
鎴戞墍浣跨敤鐨勯兘鏄墠闈㈢殑鍒嗘瀽涓〃鐜板嚭姣旇緝鑳藉浣嶇疆淇℃伅杩涜鍖哄垎鐨勫瓧娈碉紝鎴戜滑鏉ョ湅鐪嬫晥鏋滄€庝箞鏍枫€?/p>
#浣跨敤鏂扮殑DataFrame璁粌LDA妯″瀷
clf=LinearDiscriminantAnalysis()
X=wc_new.drop(['position'],axis=1)
y=wc_new['position']
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)
clf.fit(X_train,y_train)
result=clf.predict(X_test)
#瑙傚療鍑嗙‘鐜囧緱鍒?/p>
accuracy_score(y_test,result)
缁撴灉鍑烘潵浜嗭紝绔熺劧杩樻瘮涔嬪墠鐨勬ā鍨嬪噯纭巼宸笉灏戯紝杩欎篃璇存槑浜嗘垜浠仛鏁版嵁鎸栨帢鐨勬剰涔夈€傚湪宸ㄥぇ鐨勬暟鎹泦涓娇鐢ㄤ汉鐨勭粡楠屾垨鏄劅瑙夊苟涓嶆槸寰楀埌鍑嗙‘缁撴灉鐨勬渶濂藉姙娉曪紝瑕佸湪鏁版嵁涓寲鎺樺嚭鏈夌敤鐨勫疂钘忓氨瑕佸杽鐢ㄧ瀛︾殑鏂规硶锛屽湪鏁板鍜岀粺璁″鐨勫府鍔╀笅鎶婄湅浼兼棤鐢ㄦ垨姣棤鎰忎箟鐨勬暟鎹彉鎴愯緟鍔╂垜浠洿濂藉湴杩涜鍐崇瓥鐨勫伐鍏枫€?/p>
鍐欏湪鏈€鍚庣殑璇?/p>
浣滆€呰兘鍔涙湁闄愶紝鏈枃涓毦鍏嶆湁閿欒鎴栫喊婕忥紝甯屾湜鍚勪綅璇昏€呭彲浠ュ強鏃舵寚鍑?/p>
甯屾湜鍚勪綅鍙互瀵规湰绡囨彁鍑哄疂璐垫剰瑙?/p>
杞浇璇锋敞鏄庡嚭澶?/p>
聽
聽
PUBG鏁版嵁闆嗗垎鏋愭姤鍛?/p>
鏁版嵁闆嗗垎涓轰袱涓儴鍒?鏁版嵁闆?锛?agg鏁版嵁锛?15 瀛楁
date: 鏃堕棿game_size:闃熶紞鏁伴噺match_id:姣旇禌match_mode: 瀵瑰眬妯″紡锛堢涓€浜虹О杩樻槸绗笁浜虹О锛塸arty_size锛氱粍闃熸ā寮忥紙鍗曚汉璧涖€佸弻浜鸿禌銆佸洓浜鸿禌锛塸layer_assists锛氬姪鏀绘鏁皃layer_dbno锛氬嚮鍊掍汉鏁皃layer_dist_ride锛氳浇鍏风Щ鍔ㄨ窛绂籶layer_dist_walk锛氳璧拌窛绂籶layer_dmg锛氫激瀹虫暟鍊紁layer_kills锛氬嚮鏉€浜烘暟player_name锛氱帺瀹跺悕绉皃layer_survive_time锛氱帺瀹剁敓瀛樻椂闂磘eam_id锛氶槦浼峣dteam_placement锛氶槦浼嶆帓鍚?/p>
鏁版嵁闆?: kill dataset 12 瀛楁
killed_by锛氭浜℃柟寮弅iller_name锛氬嚮鏉€鑰呭悕瀛梜iller_placement锛氬嚮鏉€鑰呮帓鍚峩iller_position_x锛氬嚮鏉€鑰呬綅缃畑鍧愭爣killer_position_y锛氬嚮鏉€鑰呬綅缃畒鍧愭爣,map锛氬湴鍥緈atch_id锛氭瘮璧泃ime锛氬瓨娲绘椂闂?victim_name锛氳鍑绘潃鑰呭悕瀛梫ictim_placement锛氳鍑绘潃鑰呮帓鍚峣ctim_position_x锛氳鍑绘潃鑰呬綅缃畑鍧愭爣victim_position_y锛氳鍑绘潃鑰呬綅缃畒鍧愭爣
鎴戜滑鍙互鑷敱鎺㈢储鏁版嵁闂寸殑鍏崇郴锛屽彂鐜颁竴浜涙湁鎰忔€濈殑鐜拌薄 鎴戞兂瀹屾垚鐨勭洰鏍?
鍑绘潃浜烘暟鐨勫垎甯冩儏鍐靛崟鍙橀噺鍒嗘瀽: 鍑绘潃浜烘暟涓庢帓鍚嶏紝 缁勯槦妯″紡涓庡悆楦″鍙橀噺闂村垎鏋愯惤鍦版垚鐩掔儹鐐瑰尯鍩燂紙瀛樻椿鏃堕棿灏忎簬180s锛夋渶濂界敤鐨勬灙姊版垬鏂楀彂鐢熺殑璺濈鍒嗗竷涓嶅悓鎴樻枟璺濈涓渶濂界敤鐨勬灙姊拌缁冧竴涓猄VM棰勬祴鏄惁鑳藉鍚冮浮
鍙婃潃浜烘暟鐨勫垎甯冩儏鍐?/p>
閮ㄥ垎浠g爜 瀵煎叆鏁版嵁 骞跺鐞嗕涪澶辨暟鎹?/p>
agg = './pubg/agg0.csv'
kill = './pubg/kill0.csv'
agg_df = pd.read_csv(agg) # shape (13849287, 15)
kill_df = pd.read_csv(kill) # shape(13426348, 12)
agg_sub_df = agg_df[:1000000]
kill_sub_df = kill_df[:1000000]
agg_sub_deleted = agg_sub_df.dropna(axis=0)
kill_sub_deleted = kill_sub_df.dropna(axis=0)
agg_sub_deleted['player_kills'].describe() # 澶ч儴鍒嗕汉鐨勫嚮鏉€浜烘暟閮芥槸鍦?浜哄拰0浜?/p>
count 998580.000000 mean 0.887166 std 1.555946 min 0.000000 25% 0.000000 50% 0.000000 75% 1.000000 max 62.000000 Name: player_kills, dtype: float64
鍗曞彉閲忓垎鏋? 鍑绘潃浜烘暟涓庢帓鍚嶏紝 缁勯槦妯″紡涓庡悆楦?/p>
# 鏌ョ湅鍑绘潃浜烘暟涓庢帓鍚嶇殑鍏崇郴; 鏁翠綋鐪嬶紝鍑绘潃浜烘暟瓒呰繃10浜哄彲浠ユ帓鍒板墠5鍚嶆鐜囨瘮杈冨ぇ锛?40宸﹀彸鏃舵湁寮傚父鍙戠敓銆?/p>
data = agg_sub_deleted[['player_kills', 'team_placement']]
sns.set(style="darkgrid")
g = sns.relplot(x="player_kills", y="team_placement",height=4,linewidth=2,aspect=1.3, kind="line", data=data)
g.fig.autofmt_xdate() # Rotate coordinates
![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723221840370.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
agg_sub_1 = agg_sub_deleted[agg_sub_deleted['team_placement']==1.0] # 绛涢€夌涓€鍚嶆暟鎹?/p>
party_size_data = agg_sub_1.groupby('party_size') # 2 , 4, 1涓夌缁勯槦妯″紡, 鍒嗗埆鑾疯儨鐜?/p>
old = agg_sub_deleted.groupby('party_size')
# 鏌ョ湅姣忕缁勯槦妯″紡鐨勮幏鑳滄鐜? 4 浜虹粍闃熻幏鑳滄鐜囨渶澶э細 4%,
num = []
for i in range(1,5):
if i==3:
continue
size = old.get_group(i)
size2 = party_size_data.get_group(i)
num.append(round(size2.shape[0]/size.shape[0], 2))
name = ['solo', 'double', 'four-people']
f, ax = plt.subplots(figsize=(7, 3))
plt.bar(range(len(num)), num, color=sns.color_palette("cubehelix",3), tick_label=name)
plt.title('ranking 1 percentage by party_size')
![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723221929468.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
澶氬彉閲忛棿鍒嗘瀽
# 鐩稿叧鎬у垎鏋? date, match_id, ,match_mode, pary_size, player_name, team_id 杩欎簺瀛楁涓嶉渶瑕?/p>
not_use = ['date', 'match_id', 'match_mode', 'party_size', 'player_name', 'team_id']
all_columns = agg_sub_deleted.columns.values
agg_sub_corr = agg_sub_deleted[[column for column in all_columns if column not in not_use]] #绛涢€変笉鍦╪ot use涓殑瀛楁
corr_data = agg_sub_corr.corr(method='spearman')
plt.subplots(figsize=(9, 9))
sns.heatmap(corr_data, annot=True, vmax=1, square=True, cmap="Blues")
plt.show()
鍏虫敞鈥檛eam_placement鈥欏垪鍙戠幇闃熶紞鎺掑悕闄や簡涓庡瓨娲绘椂闂存湁寮虹儓鐨勮礋鐩稿叧浠ュ锛屼笌杞藉叿绉诲姩璺濈鍜岃璧拌窛绂讳篃鏈夎緝寮鸿礋鐩稿叧锛堟帓鍚嶈秺灏忚秺濂芥墍浠ユ槸璐熺浉鍏筹級 ![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723222039948.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
璇︾粏鏌ョ湅 鑾疯儨鐜?鍜?杞藉叿绉诲姩璺濈鐨勫叧绯?/p>
df_ride = agg_sub_deleted.loc[agg_sub_deleted['player_dist_ride']<10000, ['player_dist_ride', 'champion']]
labels=["0k-1k", "1k-2k", "2k-3k", "3k-4k","4k-5k", "5k-6k", "6k-7k", "7k-8k"]
df_ride['drive'] = pd.cut(df_ride['player_dist_ride'], 8, labels=labels) # pd.cut , 鍒嗗壊pandas 涓?0涓瓑璺濆瓙琛?/p>
df_ride.groupby('drive').champion.mean().plot.bar(rot=30, figsize=(10, 6), color=sns.color_palette("cubehelix",8))
plt.xlabel("drive distance")
plt.ylabel("prop of Champion")
![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723222201924.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
钀藉湴鎴愮洅鐑偣鍖哄煙锛堝瓨娲绘椂闂村皬浜?80s锛?/p>
閮ㄥ垎浠g爜
from scipy.ndimage.filters import gaussian_filter
import matplotlib.cm as cm
from matplotlib.colors import Normalize
kill_sub_df_die_map1 = kill_sub_df.loc[(kill_sub_df['map'] == 'ERANGEL')&(kill_sub_df['time'] < 180)&(kill_sub_df['victim_position_x']>0), :].dropna()
bg = imread('erangel.jpg')
hmap, extent = heatmap(plot_data_ev[:,0], plot_data_ev[:,1], 1.5, bins =200)
alphas = np.clip(Normalize(0, hmap.max()/100, clip=True)(hmap)*1.5,0.0,1.)
colors = Normalize(hmap.max()/100, hmap.max()/20, clip=True)(hmap)
colors = cm.bwr(colors)
colors[..., -1] = alphas
fig, ax = plt.subplots(figsize = (8,8))
ax.set_xlim(0, 4096);ax.set_ylim(0, 4096)
ax.imshow(bg)
ax.imshow(colors, extent = extent, origin = 'lower', cmap = cm.cool, alpha = 1)
plt.gca().invert_yaxis()
plt.title('erangel killed pepole Distribution')
![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723222356627.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
鏈€濂界敤鐨勬灙姊?/p>
閮ㄥ垎浠g爜
gun_category = kill_sub_df['killed_by'].unique()
MIRAMAR = kill_sub_df[kill_sub_df['map']=='MIRAMAR']
ERANGEL = kill_sub_df[kill_sub_df['map']=='ERANGEL']
kill_sub_df_gun_M = MIRAMAR.groupby('killed_by')
kill_sub_df_gun_E = ERANGEL.groupby('killed_by')
# 缁熻鍚勯噸姝﹀櫒鍑绘潃浜烘暟
M_data = {}
E_data = {}
for name in gun_category:
try:
sub = kill_sub_df_gun_M.get_group(name)
if sub.shape[0]>100:
M_data[name]=sub.shape[0]
except Exception as e:
continue
for name in gun_category:
try:
sub = kill_sub_df_gun_E.get_group(name)
if sub.shape[0]>100:
E_data[name]=sub.shape[0]
except Exception as e:
continue
缁熻鍙戠幇鏃犺鍦ㄨ壘浼︽牸杩樻槸绫虫媺椹紝 M416, SCAR-L, M16A4 閮芥槸鍑绘潃浜烘暟鍓嶄笁鍚嶇殑姝﹀櫒 ![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723222514434.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
鎴樻枟鍙戠敓鐨勮窛绂诲垎甯?/p>
閮ㄥ垎浠g爜
vec1 = np.array([93091.37, 722236.4])
vec2 = np.array([92238.68, 723375.1])
dist = np.linalg.norm(vec1 - vec2)
vec1 =kill_sub_df[['killer_position_x', 'killer_position_y']].values
vec2 = kill_sub_df[['victim_position_x', 'victim_position_y']].values
dist = []
for i in range(len(vec1)):
dis = np.linalg.norm(vec1[i]-vec2[i])
dist.append(dis//100)
#澧炲姞涓€鍒楀嚮鏉€璺濈
kill_sub_df['kill_dist'] = dist
short_dis = kill_sub_df[kill_sub_df['kill_dist']<=50]
mid_dis = kill_sub_df[(kill_sub_df['kill_dist']>50) & (kill_sub_df['kill_dist']<=300)] # 澶氭潯浠剁瓫閫?)&()
long_dis = kill_sub_df[(kill_sub_df['kill_dist']>300) & (kill_sub_df['kill_dist']<800)]
super_dis = kill_sub_df[kill_sub_df['kill_dist']>=800]
缁濆ぇ閮ㄥ垎浜哄湪50绫充互鍐呰繎璺濈琚嚮鏉€ ![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723222801114.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
涓嶅悓鎴樻枟璺濈涓渶濂界敤鐨勬灙姊?/p>
閮ㄥ垎浠g爜
shor_gun = short_dis.groupby('killed_by')
mid_gun = mid_dis.groupby('killed_by')
long_gun = long_dis.groupby('killed_by')
super_gun = super_dis.groupby('killed_by')
def count_gun(df, category):
data = {}
for name in category:
try:
sub = df.get_group(name)
if sub.shape[0]>100:
data[name]=sub.shape[0]
except Exception as e:
continue
data = sorted(data.items(), key=lambda x:x[1],reverse=True)
return data[1:4]
shor_data = count_gun(shor_gun, gun_category)
mid_data = count_gun(mid_gun, gun_category)
long_data = count_gun(long_gun, gun_category)
super_data = count_gun(super_gun, gun_category)
杩戣窛绂绘垬鏂楋紝涓窛绂绘垬鏂楋紝M416, SCAR-L, AKM 琛ㄧ幇鏈€濂?杩滆窛绂绘垬鏂? Kar98k, M416, Mini 14 涓夌姝﹀櫒琛ㄧ幇鏈€濂?瓒呰繃800绫崇殑鎴樻枟鏁版嵁鍙兘鏈夐棶棰?![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(https://img-blog.csdnimg.cn/20200723223001922.png?x-oss- process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thc2lrbw==,size_16,color_FFFFFF,t_70)
璁粌涓€涓猄VM棰勬祴鏄惁鑳藉鍚冮浮
閮ㄥ垎浠g爜
# 涓嶈鐨勫瓧娈?/p>
all_colum = agg_sub_deleted.columns
no_use = ['match_id', 'match_mode', 'player_name', 'team_id', 'team_placement', 'date']
agg_svm = agg_sub_deleted[[colum for colum in all_colum if colum not in no_use]]
df_dataset = pd.concat([agg_negative_sub, agg_positive],axis=0) # 鍚堝苟涓や釜df锛岀珫鍚戞嫾鎺?/p>
df_dataset = shuffle(df_dataset)
y = df_dataset['champion'].values
X = df_dataset.drop(columns=['champion']).values
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
clf = make_pipeline(StandardScaler(), SVC(gamma='auto'))
clf.fit(X_train, y_train)
print('mean accuracy:', clf.score(X_test, y_test))
mean accuracy: 0.940930317181151
鎵嬪姩妫€娴?/p>
test = agg_negative.iloc[0][:-1].values # 鍒犻櫎鏍囩鍒?/p>
clf.predict([test]) == agg_negative.iloc[0][-1]
array([ True])
鎬荤粨
澶ч儴鍒嗕汉鐨勫嚮鏉€浜烘暟閮芥槸鍦?浜哄拰0浜? 骞冲潎鍑绘潃鏁?.88鍑绘潃浜烘暟瓒呰繃7浜哄彲浠ユ帓鍒板墠5鍚嶆鐜囧緢澶ц烦浼炴椂搴旇閬垮紑鍥句腑鏍囨敞鐑偣鍖哄煙闃熶紞鎺掑悕闄や簡涓庡瓨娲绘椂闂存湁寮虹儓鐨勮礋鐩稿叧浠ュ锛屼笌杞藉叿绉诲姩璺濈鍜岃璧拌窛绂讳篃鏈夎緝寮鸿礋鐩稿叧锛堟帓鍚嶈秺灏忚秺濂芥墍浠ユ槸璐熺浉鍏崇粺璁″彂鐜版棤璁哄湪鑹句鸡鏍艰繕鏄背鎷夐┈锛?M416, SCAR-L, M16A4 閮芥槸鍑绘潃浜烘暟鍓嶄笁鍚嶇殑姝﹀櫒缁濆ぇ閮ㄥ垎浜哄湪50绫充互鍐呰繎璺濈琚嚮鏉€杩戣窛绂绘垬鏂楋紝涓窛绂绘垬鏂楋紝M416, SCAR-L, AKM 琛ㄧ幇鏈€濂借繙璺濈鎴樻枟, Kar98k, M416, Mini 14 涓夌姝﹀櫒琛ㄧ幇鏈€濂介€夊彇鍚堥€傜殑鐗瑰緛锛孲VM鍑嗙‘鐜囪揪鍒颁簡0.94 銈ゃ偙銈ゃ偙锛?/p>