생성 된 주소 마이크로 편지 친구 성별 분석 결과를 기록 할 키를 파이썬

# - * - 코딩 : UTF- 8 - * - "" "
 저자 : 미스터 양 
의 데이터 : 2019 / 09 / (26) " ""
 
수입 itchat의 
수입 matplotlib.pyplot PLT의 
수입하기 matplotlib의 
수입 OS의 
수입 재 
수입 NumPy와 같은 NP
 에서 PIL 가져 오기 이미지
 에서 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 ' . <스팬 * </ SPAN> ' , '' , 항목 [ " 시그너처 " ). 스트립 (). 교체 ( " \ 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 [ ' 다른 ' = 셀프. 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 ] 에 대한 I 에서 sort_data] 
        하기 matplotlib. rcParams [ ' font.sans - 세리프 ' ] = ' SimHei가 ' ] 
        도, AX = plt.subplots는 () 
        의 구형 = ax.barh (X, Y, 컬러 = ' greenyellow ' , 정렬은 = " 센터 " ) 
        Ax.set_yticks (X)를 설정 스케일 위치 # 1 
        ax.set_yticklabels (X)는 각각 # 스케일의 속성 값을 설정 종축 
        ax.invert_yaxis () # 반전 스케일 값 
        ax.set_xlabel를 ( " 수 (비트) ' ) # 가로축 단위 설정 
        ax.set_title를 ( ' 마이크로 편지 친구 도시 통계 ({}) ' .format (self.self_nickname)) # 제목을 설정 사진
         에 대한 RECT의 y 축, NUM 에서 ZIP (의 구형, 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 = , 구름 ( 
            MODE = " RGBA ' # 투명한 배경 
            마스크 = BG 덮고 # 형상 
            BACKGROUND_COLOR = " 화이트 " 배경 색상 # 1 
            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 ()

마지막으로, 결과를 보면 :

 

 

피곤, 제 1 접촉 데이터 분석.

 

추천

출처www.cnblogs.com/lvye001/p/11593377.html