データの選択と変更


データフレーム、シリーズデータの検索方法

データの選択

  • .loc(locatonの略):明示的なインデックス
  • を参照してください.
    country.loc['china'] # 인덱싱
    country.loc['japan':'korea', :'population'] # 슬라이싱
  • .iloc:デフォルトのインデックスを参照してください.Pythonスタイルの整数インデックスを参照します.
  • country.iloc[0] # 인덱싱
    country.iloc[1:3, :2] # 슬라이싱
    インデックス結果には1.409250 e+09と表記され、eは10のn乗(+後数字)を表す.これは10の9勝です.
    選択
  • 列:列名を使用してDataFrameからデータ
  • を選択
    country
    country['gdp'] # 시리즈
    country[['gdp']] # 데이터프레임
    シリーズ

    データフレーム
    シリーズの値セットがデータフレームになります!
  • 条件の使用:データフレーム内のカラムだけでなく、値も知っている場合は、masking演算またはquery関数を使用して条件を使用できます.
  • country[country['population'] < 10000] # masking 연산 활용. population이라는 column 값 정확히 알 때 사용.
    country.query("population > 100000") # query 함수 활용

    データの変更

  • 列の追加:Seriesはnumpy arrayのように演算子
  • を使用することもできます.
    gdp_per_capita = country['gdp'] / country['population'] # 1인당 GDP
    country['gdp per capita'] = gdp_per_capita # 아래 사진처럼 추가됨.
  • データの追加/変更:リストまたはディックシーケンス
  • に追加
    df = pd.DataFrame(columns = ['이름','나이','주소']) # 데이터프레임 생성
    df.loc[0] = ['길동', '26', '서울'] # 리스트로 데이터 추가
    df.loc[1] = {'이름':'철수', '나이':'25', '주소':'인천'} # 딕셔너리로 데이터 추가
    df.loc[1, '이름'] = '영희' # 명시적 인덱스 활용하여 데이터 수정
    データフレームの作成
    データ追加結果
    データ修正結果
  • NaN列の追加:NaN値で初期化された新しい列
  • を追加します.
    df['전화번호'] = np.nan # 새로운 컬럼 추가 후 초기화|nan = Not a Number. 즉, 숫자가 아니다. 이것은 비어있는 데이터다라는 뜻.
    df.loc[0, '전화번호'] = '01012341234' # 명시적 인덱스 활용하여 데이터 수정
    列を追加
    データ修正結果
    削除
  • 列:DataFrameから列を削除すると元の値
  • が変更されます.
    df.drop('전화번호', axis = 1, inplace = True) # 컬럼 삭제
    # axis = 1 : 열 방향 / axis = 0 : 행 방향
    # inplace = True : 원본 변경. 요거 사용할 땐 꼭 원본을 따로 저장한 후 사용하기. / inplace = False : 원본 변경 X

    「練習3」の条件を満たす値を抽出


    質問する


    与えられた値の下で、
    1.マスク演算によりA値が0.5未満、B値が0.3以上の値を出力する.
    2.query関数を使用して上記条件の値を出力します.
    import numpy as np
    import pandas as pd
    
    print("Masking & query")
    df = pd.DataFrame(np.random.rand(5, 2), columns=["A", "B"])
    print(df, "\n")
    
    # 데이터 프레임에서 A컬럼값이 0.5보다 작고 B컬럼 값이 0.3보다 큰값들을 구해봅시다.

    code

    # 마스킹 연산을 활용하여 출력해보세요!
    
    print(df[(df['A']<0.5)&(df['B']>0.3)])
    
    # query 함수를 활용하여 출력해보세요!
    
    print(df.query("A < 0.5" and "B > 0.3"))

    実行結果

    Masking & query
              A         B
    0  0.385740  0.313716
    1  0.346635  0.461108
    2  0.565224  0.937440
    3  0.878549  0.139105
    4  0.662327  0.309578 
    
              A         B
    0  0.385740  0.313716
    1  0.346635  0.461108
              A         B
    0  0.385740  0.313716
    1  0.346635  0.461108

    [練習4]新しい列を追加


    質問する

    국가별 GDPシリーズデータと국가별 인구シリーズデータからなるcountryデータフレーム.1人当たりGDPを反映するために、gdp per capitaをデータフレームに追加しましょう.
    1.2つのcountry列を使用して新しい列を作成します.1人当たりGDPを表すgdp per capitaという新しいコラムをデータフレームに追加した.
    1人当たりのGDPはgdppopulationに分けられる.
    2.完了したデータフレームを印刷!
    import numpy as np
    import pandas as pd

    GDPと人口のシリーズ値を含むデータフレームを作成します。


    population = pd.Series({'korea': 5180,'japan': 12718,'china': 141500,'usa': 32676})
    gdp = pd.Series({'korea': 169320000,'japan': 516700000,'china': 1409250000,'usa': 2041280000})
    print("Country DataFrame")
    country = pd.DataFrame({"population": population,"gdp": gdp})
    print(country)
    ## code
    ```python
    # 데이터프레임에 gdp per capita 칼럼을 추가하고 출력합니다.
    gdp_per_capita = country['gdp'] / country['population']
    country['gdp per capita'] = gdp_per_capita
    print(country)

    実行結果

    Country DataFrame
           population         gdp
    korea        5180   169320000
    japan       12718   516700000
    china      141500  1409250000
    usa         32676  2041280000
           population         gdp  gdp per capita
    korea        5180   169320000    32687.258687
    japan       12718   516700000    40627.457147
    china      141500  1409250000     9959.363958
    usa         32676  2041280000    62470.314604