大統領選挙


データのロード
#   
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas import Series, DataFrame

#   
resulr_df=pd.read_cse('data/2016-us-ge-by-county.csv')

列または行の削除–drop関数
  • df.drop([「列名」,axis=1):列を削除する例:df 1.drop(「handsome」,「smart」,axis=1)#handsomeおよびsmartという列全体
  • を削除
  • df.drop(columns=["列名"):削除列比入:df 1.drop(columns=["handsome","smart"])#handsomeとsmartという列の全列
  • を削除
  • df1.drop(columns=["handsome","smart")#handsomeとsmartという列の列全体を削除する例:df 1.drop([0,1])#削除インデックス0,1の行全体
  • まとめ:
    drop関数の後にshift+tabを使用すると、関数のパラメータの詳細を表示できます.デフォルトパラメータaxis=0は、行を操作することを示します.列を操作するには、デフォルトパラメータaxis=1を変更する必要があります.デフォルトパラメータinplace=Falseは、元のデータを変更するのではなく、削除操作を実行した新しいdataframeを返します.元のデータを直接削除する必要がある場合は、デフォルトパラメータをinplace=True df 1に変更する必要がある.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=‘raise’)
    #      
    result_df.drop(['StateCode','CountyFips'],axis=1,inplace=True)
    result_df.head()
    #         
    trump_df = result_df[result_df['Candidate']=='Trump']
    clinton_df = result_df[result_df['Candidate']=='Clinton']
    print(trump_df.head())
    

    merge:表3を2枚マージします.pd.merge()メソッド接続フィールドを設定します.デフォルトパラメータhowはinner内接続であり、同じフィールドkeyでマージされます.すなわち、on=「key」に等価であり、表示可能な設定on=「key」でもあります.ここでも推奨します.
    #  
    pd.merge(df1,df2)
    pd.merge(df1,df2,on='key')
    

    両側のマージフィールドが異なる場合はleft_を使用します.onとright_onパラメータはマージフィールドを設定します.もちろんここではマージフィールドはkeyなのでleft_onとright_onパラメータ値はkeyです.
    #  
    pd.merge(df1,df2,left_on='key',right_on='key')
    

    4.pd.merge()メソッド接続方法を設定します.主にinner(内部接続)、outer(外部リンク)、left(左接続)、right(右接続)が含まれます.パラメータhowのデフォルト値はinner内接続で、上はすべて内接続を採用し、接続の両側にある値です.outer外部ジョインを使用すると、並列化され、NaNで満たされます.
    #  
    pd.merge(df1,df2,left_on='key',how='outer')
    

    外部ジョイン左ジョインと右ジョインの並列セット.左接続は左側のDataFrameがすべてのデータを取り、右側のDataFrameが左側のDataFrameに一致します.(右接続rightと左接続類似)
    #  
    pd.merge(df1,df2,left_on='key',how='left')
    

    5.pd.merge()メソッドインデックス接続、および重複カラム名ネーミング.pd.merge()メソッドはleft_を設定できます.indexまたはright_indexの値はTrueでインデックス接続を使用します.たとえば、ここでdf 1はdata 1を使用して接続キー、df 2はインデックスを使用して接続キーを使用します.
    #  
    pd.merge(df1,df2,left_on='data1',right_index=True)
    

    上から2つのDataFrameにkey列があり、mergeがマージされるとpandasは自動的に後ろに(_x,_y)を付けて区別し、suffixesを設定することで名前を設定することもできます.
    #  
    pd.merge(df1,df2,left_on='data1',right_index=True,suffixes=('_df1','_df2'))
    
    #       ,       2             ,      。
    #on       ,        
    result_df=pd.merge(trump_df,clinton_df,
    			on=['StateName','CountyName','CountyTotalVote'],
    			sufixes=['_t','_c'])
    result_df.drop(['Party_t','Party_c','Candidate_t', 'Candidate_c'], axis=1, inplace=True)
    # columns    
    result_df.columns =['StateName', 'CountyName', 'TotalVote', 'VoteTrump', 'VoteClinton']
    
    #        
    '''df[](            ).groupby([df[  ],df[  ])(      ,       ,     ).mean()(         ——    )
        :
    print(df["  "].groupby([df["  "],df["  "]]).mean())
    #                                 '''
    [      ](https://www.cnblogs.com/Yanjy-OnlyOne/p/11217802.html)
    
    result_df=result.groupby(by=result_df['StateName'],as_index=False).sum()#       
    result_df.drop([8],inplace=True)#     
    #          
    result_df['T-Ratio'] = result_df['VoteTrump'] / result_df['TotalVote']
    result_df['C-Ratio'] = result_df['VoteClinton'] / result_df['TotalVote']
    #     
    '''map()                 。
          function                function   ,       function          。
    
    map()     :
    
    map(function, iterable, ...)
    '''
    result_df['Winner']=list(map(lambda x,y:'Trump' if x>y else 'Clinton',result_df['T-Ratio'],result_df['C-Ratio']))
    
    #      
    income_df = pd.read_csv('data/us/2015-us-income-by-county.csv')
    print(income_df.head())
    print(income_df.Income.mean())
    desc = income_df.describe()
    print(desc)
    '''loc              ,   ,  !  !  !'''
    print(desc['Income']['75%'])###??
    print(desc.loc['50%', 'Income'])##??
    
    #           
    result_df=pd.merge(result_df,income_df,on=['StateName'])
    result_df=result_df.sort_values(by='Income',ascending=False)
    print(result_df.head())
    
    

    グラフィックディスプレイ
    #        
    plt.rcParams['font.sans-serif']=['SimHei']
    
    colors = reslut_df['Winner'].map({'Trump':'Blue', 'Clinton':'Red'})
    
    spot_size = result_df['TotalVote']/6000.0#        
    plt.figure(figsize=(15,10))
    plt.scatter(x=result_df["Income"],
                y = result_df['T-Ratio'],
                s=spot_size,
                c=colors,
                alpha=0.25
               )#alpha   ,
    
    plt.xlabel('    (  )',fontsize=20)
    plt.ylabel('  Trump    ',fontsize=20)
    plt.grid(True) #     
    plt.show()