生成されたアドレスマイクロ手紙の友人ジェンダー分析結果をログに記録するキーをPYTHON

# - * -コーディング: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()

最後に、結果を見て:

 

 

疲れて、最初のコンタクトデータ解析。

 

おすすめ

転載: www.cnblogs.com/lvye001/p/11593377.html