import pandas as pd
df = pd.DataFrame(np.random.randn(5, 3))
df.head()
pandas๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
- ๋๋ถ๋ถ์ ์ ์ ๋ ๋ฐ์ดํฐ๋ค์ ํ ์ด๋ธ ํํ๋ก ํํ๋๋ฉฐ, ์ด๋ฐ ํ ์ด๋ธ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ธฐ์ ์ต์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ์ ํํ๋ ๋ฐ์ดํฐ ์ฐ์ฐ์ ์ต์ ํ ๋์ด ์์ผ๋ฉฐ, ์ฑ๋ฅ์ด ๋งค์ฐ ๋ฐ์ด๋๋ค.
- ๋ค์ํ ์ ํ ๋ฐ์ดํฐ๋ฅผ ํตํฉ ๊ด๋ฆฌํ ์ ์๊ณ , json, html, csv, xlsx, hdf5, sql ๋ฑ์ DataFrame์ผ๋ก ํต์ผํด์ ํํ๋ ์ ์๋ค.
- ์์ ์์ ์ ๊ณตํ๋ ์ฐ์ฐ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋ค ์ ๊ณตํ๋ค.
import pandas as pd
import numpy as np
# 1, 3, 5, np.nan, 6, 8์ ์์๋ก ๊ฐ์ง๋ pandas.Series ์์ฑ
pd.Series([1, 3, 5, np.nan, 6, 8])
# 12x4 ํ๋ ฌ์ 1๋ถํฐ 48๊น์ง์ ์ซ์๋ฅผ ์์๋ฅผ ๊ฐ์ง๊ณ , index๋ 0๋ถํฐ ์์ํ๊ณ , coulmns์ ์์๋๋ก X1, X2, X3, X4๋ก ํ๋ DataFrame ์์ฑ
df = pd.DataFrame(data=np.arange(1, 49).reshape(12, 4),
index=np.arange(12),
columns=["X1", "X2", "X3", "X4"])
# dataframe index
df.index
# dataframe columns
df.columns
# dataframe values
df.values
# ํน์ column์ ๊ฐ์ ธ์ค๊ธฐ
df["X2"] # dictionary like
# X1 column์ 2 ๋ํ๊ธฐ
#df["X1"] = df["X1"] + 2
df["X1"] + 2
# dataframe์ ๋งจ ์ ๋ค์ฏ์ค์ ๋ณด์ฌ์ฃผ๋ head() --> 5์ค display
df.head()
# 10์ค
df.head(10)
# dataframe์ ๋งจ ๋ฐ ๋ค์ฏ์ค์ ๋ณด์ฌ์ฃผ๋ head() --> 5์ค display
df.tail()
# dataframe์ ๋ํ ์ ์ฒด์ ์ธ ์์ฝ์ ๋ณด ํ์
df.info()
# dataframe์ ๋ํ ์ ์ฒด์ ์ธ ํต๊ณ์ ๋ณด ํ์
df.describe()
# X2 column๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
df.sort_values(by="X2", ascending=False)
# X1 column์ indexing == df["X1"]
df.X1
# ์์์ 3์ค์ slicing
df[:3]
# df์์ index value๋ฅผ ๊ธฐ์ค์ผ๋ก indexing๋ ๊ฐ๋ฅ == df.index[0]
df.loc[0]
# loc 2์ฐจ์ indexing
df.loc[[0, 1, 4, 6, 10], ["X1", "X3"]]
# dataframe์ ์กฐ๊ฑด์์ ์ ์ฉ
df[df["X3"] % 3 == 0]
# integer-location based indexing
df.iloc[5]
# iloc 2์ฐจ์ indexing
df.iloc[[3, 4], [0, 1]]
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[0, 1, 2, 3])
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']},
index=[0, 1, 2, 3])
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐํ๋ ์์ด ์ฃผ์ด์ก์๋ ๋ฐ์ดํฐํ๋ ์์ ํฉ์น๊ณ ์ถ์ผ๋ฉด merge ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
# SQL๊ณผ ๊ฐ์ด join operation์ ์ฌ์ฉํ ์ ์๋ค
pd.merge(df1, df2, on="A", how="outer")
# left join
pd.merge(df1, df2, on="A", how="left")
# ๊ทธ๋ฅ ํฉ์น๊ธฐ (concatenation)
pd.concat([df1, df2, df3], axis=0).reset_index(drop=True)