Pandas Libraryベース
Pandas Libraryとは?
Pythonプログラミング言語を使用して作成されたデータ操作と分析のためのソフトウェアライブラリ.
3種類の客体(series
・dataframe
・index
・)を有する.
1. series
indexとvalueからなり、index
プロパティを使用してアクセスできます.
# 방법 1 (배열)
import pandas as pd
data1 = pd.Series([0.25, 0.5, 0.75, 1.0], index = ['a', 'b', 'c', 'd'])
data2 = pd.Series([0.25, 0.5, 0.75, 1.0], index = [2, 3, 5, 7])
# 방법 2 (dictionary) - key가 index 역할
price_dict = {'apple': 20000,
'banana': 10000,
'pineapple': 9000,
'strawberry': 9000,
'cherry': 17000}
price = pd.Series(price_dict)
2. dataframe
機械学習モード学習の学習データの基本データ構造は、
인덱스
と열이름
の2次元配列を有するものと考えられる.# 방법 1) pd.DataFrame(series, columns)
data = [{'a': i, 'b': 2*i} for i in range(3)]
pd.DataFrame(data)
# 여러 series의 결합 (방법1)
validity_dict = {'apple': '2021-11-30',
'banana': '2021-10-30',
'pineapple': '2021-10-20',
'strawberry': '2021-10-21',
'cherry': '2021-10-22',}
validity = pd.Series(validity_dict)
fruit = pd.DataFrame({'price': price, 'validity': validity})
fruit
# 방법 2) pd.DataFrame(dictionary list)
data = [{'a': 1, 'b':2}, {'b': 3, 'c':4}]
pd.DataFrame(data)
# 방법 3) pd.DataFrame(numpy array, columns, index)
import numpy as np
pd.DataFrame(np.random.rand(3,2),
columns =['foo', 'bar'],
index = ['a', 'b', 'c'])
3. Index
ind = pd.Index([2,3,5,7,11])
ind[1] # 인덱싱
ind[::2] # 슬라이싱
ind[1] = 0 # Type error 발생 (요소 변경 불가)
indA = pd.Index([1,3,5,7,9])
indB = pd.Index([2,3,5,7,11])
indA & indB # 집합 연산 가능 (교집합)
indA | indB # 집합 연산 가능 (합집합)
# key를 이용한 데이터 인덱싱
data = pd.Series([0.25, 0.5, 0.75, 1.0], index = ['a', 'b', 'c', 'd'])
'a' in data # 'a'가 data에 들어있는지 확인
data.keys() # data의 key(index) 가져오기
list(data.items()) # data의 key-value 가져오기 (data.items() x)
data['e'] = 1.25 # 값 추가
data['d'] = 9.9999 # 값 치환
# key를 이용한 데이터 슬라이싱
data['a':'c'] # explicit한 인덱스 사용
data[0:3] # implicit한 인덱스 사용
data[(data>0.3) & (data<0.8)]
data[['a', 'e']] # 팬시 인덱싱
4.DataFrameインデックスとスライス
loc
indexer(位置ベースindexer):明示インデックス(indexオブジェクトの値を利用)iloc
indexer(integer-location based indexer):暗黙インデックス(インデックスオブジェクトの値に関係のないレコード順)を使用したインデックス키
or속성
アクセス可能1.
data['column']
exデータ[「price」](推奨方式)2.
data.column
ex) data.price データフレームの作成
area = pd.Series([423967, 170312, 149995, 141297, 695662],
index = ['California', 'Florida', 'Illinois', 'New York', 'Texas'])
pop = pd.Series([38332521, 19552860, 12882135, 19651127, 26448193],
index = ['California', 'Florida', 'Illinois', 'New York', 'Texas'])
df = pd.DataFrame({'area':area, 'pop':pop})
df['density'] = df['pop']/df['area']
df
行単位索引
# 행단위 인덱싱을 할 때는 인덱서를 꼭 사용해야함.
df['California'] # 잘못된 방식
df.loc['California'] # 올바른 방식
df.iloc[0]
# 팬시 인덱싱
ind1 = ['Florida', 'Texas']
df.loc[ind1]
df.iloc[[1,4]]
列ごとの索引付け
# 열단위 인덱싱은 인덱서를 활용하지 않고 특징 이름을 활용.
df.loc['pop'] # 잘못된 방식
df['pop'] # 올바른 방식
type(df['pop']) # 결과는 series
# 팬시 인덱싱
ind2 = ['pop', 'area']
df[ind2]
滑空する
df.loc['Florida':'Texas']
df['Florida':'Texas'] # 인덱서 생략가능
列ごとにスライド
# dataframe의 column 인덱스 객체를 활용
df[df.columns[1:]]
# dataframe의 암묵적 idnex를 활용
df.iloc[:,1:]
# 팬시 인덱싱
ind4 = df['density']>=100
df[ind4]
ind5 = df['area']>=150000
df[ind4 & ind5]
5.実測値処理
NaN (Not a Number)
None
NULL演算
isnull()
:欠落値を示すブールmaskを生成notnull()
:isnull()
反対のbool maskを生成dropna()
:欠落した値を消去するデータを返すdf.dropna(axis=0) # nan을 포함하는 행을 삭제
df.dropna(axis=1) # nan을 포함하는 열을 삭제
fillna(x)
:欠落値xのデータコピーを返すdf.fillna(method = 'ffill') # 이전값으로 채우기
df.fillna(method = 'bfill') # 다음값으로 채우기
6.重複データ処理
drop_duplicates()
:Pandasデータフレームにおける冗長データの検証と処理方法drop_duplicates(subset = None,
keep = ‘first’,
inplace = False,
ignore_index = False)
df[df.duplicated(keep = False)] # 중복 데이터 '확인'
df.drop_duplicates() # 중복 데이터 '삭제'
df.drop_duplicates(subset = [‘brand’]) # brand특징 중복 데이터 삭제
7.データフレームのマージ
concat関数
pd.concat([df1, df2])
np.concatenate()
と異なり、インデックスは変わらない=>解決方法:
pd.concat([df1, df2], ignore_index=True)
merge関数
on
キーワード使用pd.merge(df1, df2, on = ['employee'])
left_on & right_on
キーワード使用# employee(=name) 으로 결합
pd.merge(df1, df3, left_on = 'employee', right_on='name')
left_index & right_index
キーワード使用pd.merge(df1, df3, left_index=True, right_index=True)
Reference
この問題について(Pandas Libraryベース), 我々は、より多くの情報をここで見つけました https://velog.io/@danbibibi/Pandas-Library-기초テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol