データ分析用のライブラリ.2


Pandas


Pythonのライブラリ
構造化データの効率的な処理と格納
アレイ計算に特化したNumpy設計に基づく

シリアルデータ


Numpyのarray補強型
データとインデックス

dtypeパラメータを使用してデータ型を指定できます
data = pd.Series([1,2,3,4], dtype = "float")
print (data.dtype)   #-> float64
インデックスを指定したり、インデックスにアクセスしたりできます.

Dictionaryでシリアルの作成を許可
population_dict = {
	'china':141500,
    'japan':12718,
    'korea':5180,
    'usa':32676
}

population = pd.Series(population_dict)

DataFrame


複数のシリーズからなる行と列のデータ

DictionaryはDataFrameの作成をサポート
data ={
	'country': ['china','japan','korea','usa'],
    'gdp': [1409250000, 516700000, 169320000, 2041280000],
    'population':[141500, 12718, 5180, 32676]
}
country = pd.DataFrame(data)
country = country,set_index('country')

1.Dictionary( data={key:value} -> 2.sireis (series([1.2.3.4]) -> 3.dataFrame(1->3)
DataFrameプロパティを検証するには、次の手順に従います.
print(country.shape) # -> (4,2)
print(country.size) # -> 8
print(country.ndim) # -> 2
print(country.values) # [[1409250000     141500]
                         [ 516700000      12718]
                         [ 169320000       5180]
                         [2041280000      32676]]
indexとcolumnの名前を指定
country.index.name = "Country" # 인덱스에 이름 지정
country.columns.name = "Info"  # 컬럼에 이름 지정
データフレームの格納と読み込みが可能
#저장
country.to_csv("./country.csv") # csv (comma separated values)
country.to_excel("country.xlsx")
#불러오기
country = pd.read_csv("./country.csv") # comma separated values)
country = pd.read_excel("country.xlsx")

データの選択と変更


データの選択→索引/スライス
.loc:明示的なインデックスを参照するインデックス/スライス
.iloc:Pythonスタイルの整数インデックス/スライス
.loc

.iloc

カラム名がわかる場合は、DataFrameからデータを選択できます

Maching演算またはquery関数を使用して、条件に一致するDataFrame行を抽出
country[country['population'] < 10000] # masking 연산 활용
country.query("population > 100000")   # query 함수 활용
結果値

Seriesはnumpy arrayのように演算子を使用することもできます
gdp_per_capita = country['gdp'] / country['population']
country['gdp per capita'] = gdp_per_capita
結果値

データの追加/変更->listまたはdictionary
df = pd.DataFrame(columns = ['이름','나이','주소']) #DataFrame 생성

df.loc[0] = ['길동','26','seoul'] # list로 데이터 추가
df.loc[1] = {'이름':'철수','나이':'25','주소':'인천'} # Dictionary로 데이터 추가
df.loc[1,'이름'] = '영희' #명시적 인덱스 활용하여 데이터 수정
結果値

データの変更->NaN列の追加(Nan=Nota Number)
NAN値で初期化された新しいカラムを追加
df['전화번호'] = np.nan              # 새로운 컬럼 추가 후 초기화
df.loc[0,'전화번호'] = '01012341234' # 명시적 인덱스 활용하여 데이터 수정
結果値

データの変更→列の削除
dataFrameから列を削除してソースを変更
df.drop('전화번호',axis = 1, inplace = True) # 컬럼삭제
# axis = 1 -> 열방향 / axis = 0 :행 방향
# inplace = True : 원본 변경 / inplace = False : 원본 변경 x
結果値

Masking演算のオーバーラップは&queryのオーバーラップはand!