EDA/Webスクロール2(Pandasベース)

18659 ワード

pandas


pythonはRと同じ強力なデータ処理能力のモジュールを提供し、単一プロセスで最高効率のステロイドはEXCELに合致する......異なるバージョンの構文またはオプションを確認する必要があります
from MODULE import function:MODULEに含まれる1つの関数のみを使用します!
  • 通常csvはスペースpdに分けられる.読み取り専用コマンドread csv(パス、符号化="utf-8")
  • cd Documentsはこのように現在の位置を指定します!//...:親フォルダへ移動

  • ファイル名、位置を入力する時、適当な場所でTABボタンを押して、自動的に機能を完成して一時停止します!
    pandas read excelドキュメントに示すように、詳細ファイルを検索してください.
  • 変数名=pd.read excel(パス、header=2、usercols="A、B")、header:データの読み込みを開始する行を指定し、usercols:読み込むcol(A、BはExcelベース)を指定します!
  • 변수명 = pd.read_excel(
        "../data/어쩌구저쩌구",header=2,usecols="B, C, D, "
    )

  • Series:Pandasデータ型の基本構成

  • 列名の変更:変数名.rename(columns={変数名.columns[置換インデックス]:[置換名]},inplace=True)/一行に書くと読みにくく、その毒性を考慮してください!
  • Data.rename(columns={Data.columns[0] : "바꿀이름",
    		    Data.columns[1] : '바꿀이름2'},
                        inplace=True)
    
    
  • date range:日付(時間)
  • x = pd.Series([1,3,5, np.nan]) 
    dates = pd.date_range("20210916", periods=6) #periods : n일 날짜생성
    output : DatetimeIndex(['2021-09-16', '2021-09-17', '2021-09-18', '2021-09-19',
                   '2021-09-20', '2021-09-21'],
                  dtype='datetime64[ns]', freq='D')
        
    df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=["A","B","C","D"])
    #6 by 4 매트릭스 생성
    
    # 컬럼추가, 기존컬럼이 없으면 추가하고 있으면 수정
    df["이름"] = ["내용","내용1","내용2"]
  • df[「列名」,df.カラム名でカラムを問い合せることができ、X"1"を数値単位で問い合せる場合、Xの2つ以上のカラムを選択すると、df["A"、"B]]としてリストにリストできます.
  • .loc[行、列]:インデックス名、ex)dfとして特定の行を選択します.loc["2021-09-17",["A","B"]]
  • df.loc[:,["A","B"]]
    # pandas의 보편적인 slice 옵션
    # 위 처럼하면 모든행, "A","B"열을 출력
    # 일반적으로 n:m이면 n부터 m-1 까지만 index나 이름으로 하는경우 끝도 포함

  • .iloc[rowインデックス,colインデックス]は、情報、ex)dfをクエリーできます.iloc[[1,2,4],[0,2]]

  • .head(見たい数)コマンド:上位5桁の情報を表示し、Rと同じ、tail()も同様

  • .info():DataFrameの基本情報をチェックし、通常のcolのサイズデータの形式をチェックする

  • .columnsを使用してcolumnをクエリーできます.


  • .describe():DataFrameの統計基本情報を表示する


  • .corr():相関係数を表示

  • .sort valuese(by=「標準の列になる」、昇順=False)/列降順を選択し、昇順にソート

  • 重複する.unique(),ex)x.unique()の削除
  • Pandas Slice under condition


    通常フィルタはdf[condition]を使用する
    df[df>0]、df["A">0]のように濾過することができる
    # A 컬럼에서 0보다 큰 숫자만 선택
    df["A"]>0 
    output -> True,False 마냥 뜸
    # 필터링된거 출력
    df[df["A"]>0] 
    
    df[df>0] # NaN까지 출력

  • df[“colum]”.isin([要素]):特定の要素があるかどうかを確認します
    #예시
    df["E"].isin(["two","four"])
    output -> True,False 마냥 뜸
    #특정 요소가 있는 행만 선택
    df[df["E"].isin(["two","four"])]

    列の削除


    del削除したいカラムex)deldf["E"]
    df.drop(消去する行または列、axis=)、ex)df.drop([D],axis=1);軸を設定しない場合、デフォルトはrow
  • df.apply(関数):特定の関数、ex)dfを適用できます.apply(np.cumsum)
    offset index:[n:m]:nからm-1まで、インデックスまたはカラムの名前のスライスを使用すると、エンドポイントが含まれます.

    Pandas Indexの指定


    はindexを再指定するコマンド語です.
    .set index(「標準」,inplace=True)
    #예시
    data.set_index("구별",inplace=True)
    ユニークなデータをインデックスとして、グラフを描くのに便利です!

    データのマージ


    concat()、merge()、join()の3つの方法でマージできます.

  • merge : .merge(data 1,data 2,how="標準データ",on="標準")
    ex) pd.merge(左、右、how=「左」、on=「key」)、左は生きていて、左と右だけが重なっています
    how=「outer」を2つ組み合わせて、破損を回避します.
    how=innerを使用する場合は、2つのデータの共通分母//innerのみをマージします.


  • Analysis Seoul CCTV

    import numpy as np
    import pandas as pd
    CCTV_seoul = pd.read_csv(
        "주소",encoding="utf-8"
    )
    CCTV_seoul.rename(columns={CCTV_seoul.columns[0] : "구별"}, inplace=True)
    pop_Seoul = pd.read_excel("C:/Users/PH/data/01. Seoul_Population.xls")
    
    
    pop_Seoul = pd.read_excel("C:/Users/PH/data/01. Seoul_Population.xls",header=2,usecols="B, D, G, J, N")
    
    pop_Seoul.rename(columns={pop_Seoul.columns[0]:"구별",pop_Seoul.columns[1]:"인구수",pop_Seoul.columns[2]:"한국인",pop_Seoul.columns[3]:"외국인",pop_Seoul.columns[4]:"고령자"},inplace=True)
    
    pop_Seoul['외국인비율'] = pop_Seoul["외국인"] / pop_Seoul["인구수"] * 100
    CCTV_seoul["최근증가율"] = (CCTV_seoul["2016년"] + CCTV_seoul["2015년"]) / CCTV_seoul["2013년도 이전"] * 100
    
    data_result = pd.merge(CCTV_seoul, pop_Seoul, on="구별")
    data_result["CCTV 비율"] = data_result["소계"] / data_result["인구수"] * 100
    del data_result["2014년"]
    del data_result["2015년"]
    del data_result["2016년"]
    del data_result["2013년도 이전"]
    
    data_result.set_index("구별", inplace=True)
    data_result.head()