# - * -コーディング:UTF- 8 - * - "" " 著者:ミスターヤン データ:2019 / の09 / 26 """ 輸入itchatの 輸入matplotlib.pyplot としてPLT 輸入matplotlibのを インポートOSの 輸入再の 輸入numpyのようNP からPILのインポート画像 からwordcloud.wordcloudインポートWordCloudのクラス:WeiXinAnalyze() デフ__init __(自己): self.sex_dict = {} self.city_dict = {} self.self_nickname = '' self.wordList = [] self.save_path = ' 結果' DEFのwx_login(自己): "" " マイクロチャネルデータと統計はログ""" itchat.login() データ = itchat.get_friends(更新= 真) self.self_nickname =データ[ 0 ] [ 「ニックネーム」]#マイクロチャネルニックネーム得る ための項目でデータ: 性別 =項目GET(「性別」)#セックス 州 =アイテム。GET(' 省' )#省份 市 =のアイテム。取得(' 市' )#城市 かのセックスやセックス== 0 : もしセックスないでself.sex_dict: self.sex_dict [性別] = 1 他: self.sex_dict [性別] + = 1 であれば州および市: アドレス = ' - ' .join([州、都市]) の場合ではないアドレスでself.city_dict: self.city_dict [住所] = 1 さもなければ: self.city_dict [住所] + = 1 であればアイテム[ " 署名" ]: 署名 = re.sub(R ' <スパン* </スパン> '、'' 、項目[ " 署名" ])ストリップ()(置き換える。。' \ nを'、'' ) self.wordList.append(署名) ならないos.path.exists(self.save_path): os.mkdir(自己。save_path) デフget_sex_info(自己): "" " ジェンダー法" "" sex_dict = {} sex_dict [ ' M ' ]、sex_dict [ ' F ' ]、sex_dict [ ' その他' ] = self.sex_dict.pop(1)、self.sex_dict.pop(2)、self.sex_dict.pop(0 ) #データ作成 データ = sex_dict.items() ラベル = [I [ 0 ] 用の I におけるデータ] NUMS = [Iは[1 ] 用の I におけるデータ] #matplotlibの使用円グラフ描画 matplotlib.rcParamsを[ ' font.sans serif- ' ] = [ ' SimHei ' ]#漢字フォントの種類(ここではボールドで)指定 plt.titleを(' マイクロチャネルのバディ性別統計({})' .format(self.self_nickname)) plt.pie(X = NUMSは、=ラベル、autopct =ラベル' %の1.2fを%% ' ) os.path.join(自己plt.savefigを( .save_path、' wx_sex_data.png ' )) DEF get_address_info(自己): "" " 分析手法アドレス" "" データ= self.city_dict。項目() sort_data=ソートされた(データは、キー=ラムダI:私は[ 1 ]、逆= TRUE)[:20 ] X = [I [ 0 ] 用の I におけるsort_data] Y = [I [ 1 ] のために私にsort_data] matplotlib.rcParams [ ' font.sans-セリフ' ] = [ ' SimHei ' 】 図、AX = plt.subplots() rects = ax.barh(X、Y、色= ' greenyellow '、=整列" 中心" ) ax.set_yticks(X)#セットスケール位置 ax.set_yticklabels(x)が#の縦軸は各スケールのプロパティ値を設定 ax.invert_yaxis()#反転スケール値 ax.set_xlabel(' 数(ビット)] )#横軸の単位設定 ax.set_title(' マイクロ手紙友人都市統計({})' .format(self.self_nickname))#タイトルセットピクチャ 用 RECT、Y、NUM にZIP(rects、X、Yを): X = rect.get_width() plt.text(X + 0.05、Y、" %D "%のINT (NUM)) plt.savefig(os.path.join(self.save_path、'wx_address_data.png " )) DEF wx_ciyun(自己): "" " マイクロ文字の単語の雲の方法" "" テキスト = " " .join(self.wordList) #取得し、現在のファイルの実行パス src_dir = os.getcwd() #単語を生成します雲が絵アドレス整形し IMAGEPATH = os.path.join(src_dirを、" timg.jpg " ) #は、(中国の文字化けを防止するために)ワードクラウドフォントアドレスを生成する フォント = os.path.join(src_dirを、" simhei.ttf " ) #生成アドレスワードクラウド resultPath = os.path.join(self.save_path、「wx_ciyun。PNG ") #は、画像生成を開始 BG = np.array(Image.open(IMAGEPATH)) WC = wordcloud( モード = ' RGBA ' 、#透明な背景 マスク = BG、被覆#形状 BACKGROUND_COLOR = " 白" 、背景色# max_font_size = 80 、最大フォント#1 MIN_FONT_SIZE = 10 、最小フォント#1 MAX_WORDS = 5000 、表示されたワードクラウド内の単語の最大数# random_state =100は、#は、どのように多くのランダム発生状態を提供即ち、どのように多くのカラースキーム font_path = フォント、フォントセット# ).generate(テキスト) wc.to_file(resultPath) IF __name__ == ' __main__ ' : Weixin = WeiXinAnalyze() Weixin .wx_login() weixin.get_sex_info() weixin.get_address_info() weixin.wx_ciyun()
最後に、結果を見て:
疲れて、最初のコンタクトデータ解析。