Pandas의 DataFrame에 대한 기본 작업을 Jupyter Notebook에서 시도

지금까지 Python에서 Pandas에서의 데이터 조작은 필요하다면 구그로 사용법을 조사하면 좋다는 정도의 스탠스였습니다만, 데이터 분석이나 기계 학습의 근처를 공부함에 있어서, Jupyter Notebook에서 데이터를 스러슬러와 조작할 수 없으면 이야기가 되지 않는다고 느끼고, Pandas의 사용법을 기본에서 다시 정리하고 공부하기 시작하고 있습니다. 이 기사는 그 공부 노트입니다.

이 기사의 내용은 다음 링크에 따라 준비한 Jupyter Notebook 환경에서 시도하고 있습니다.
Jupyter Notebook을 Docker를 사용하여 쉽게 설치하고 시작 (nbextensions, Scala도 지원) - Qiita

이 환경에서 브라우저에서 포트 8888에 액세스하여 Jupyter Notebook을 사용할 수 있습니다. 오른쪽 상단의 버튼 New > Python3을 따라 새로운 노트를 엽니 다.

DataFrame 개요



Pandas의 DataFrame은 행과 열이 있는 테이블 형식의 데이터 이미지입니다. 행에는 0부터 시작하는 행 번호를 붙일 수도 있습니다만, 문자열이라도 좋은 것 같습니다. 열에는 열 이름이 붙습니다.

DataFrame은 테이블 형식이지만 Series라는 열만 있는 개체도 있습니다.

DataFrame과 Series의 내용은 아래의 기사가 매우 참고가 되었습니다.
내 pandas.Series와 DataFrame의 이미지가 잘못되었습니다 - Qiita

파이썬 패키지 가져오기


import pandas as pd

CSV 파일에서 로드


# ヘッダーがある場合
df = pd.read_csv("data.csv")
# ヘッダー行が列名になる

# ヘッダーがない場合
df = pd.read_csv("data.csv", header=None)
# 0から始まる番号が列名になる

# ヘッダーがなく列名を指定したい場合
df = pd.read_csv("data.csv", names=["id", "target", "data1", "data2", "data3"])

이 기사의 이후에는 적절한 난수로 만든 CSV 파일
htps : // 기주 b. 코 m/스즈키-나ゔぃ/사 mpぇ-다타/bぉb/마s r/사 mpぇ-다타-1. CSV
를 사용하고 있습니다.

(GitHub는 CSV 파일도 성형하여 표시 해 주네요)

데이터 내용 확인



DataFrame의 객체는 Jupyter Notebook에서 내용을 쉽게 확인할 수 있습니다.



데이터의 일부만 보고 싶다면
# 先頭の5行
df.head()

# 先頭の3行
df.head(3)
# or
df[:3]

# 最後の5行
df.tail()

# 最後の3行
df.tail(3)

# 11行目から20行目だけを抜き出す
# (0から始まるインデックスでいうと10から19)
df[10:20]

# 11行目から最後までを抜き出す
# (0から始まるインデックスでいうと10から後ろ)
df[10:]

# 11行目のみを確認
# (0から始まるインデックスでいうと10)
df.loc[10]

# 特定の列のみを抜き出す
df[["target", "data1"]]

# 特定の列のみを抜き出す
# DataFrameでなくSeriesになる
df["data1"]
# df[["data1"]]とは異なる

# 特定の行範囲の特定の列のみを抜き出す
df[["target", "data1"]][10:20]
# or
df[10:20][["target", "data1"]]

일부 행만 추출해도 행에 대한 인덱스는 유지됩니다.



데이터 형식 확인


df.shape
# => (300, 5)

df.columns
# => Index(['id', 'target', 'data1', 'data2', 'data3'], dtype='object')

df.dtypes
# => id          int64
#    target      int64
#    data1     float64
#    data2     float64
#    data3     float64
#    dtype: object

열에 연산



열에 대해 연산을 할 수 있습니다.
df["data1"] 는 Series 입니다만, df["data1"] / 100 와 같이 쓰면 Series 의 각 요소에 대해 / 100


열끼리의 연산도 할 수 있습니다.
df["data1"] + df["data2"]

행을 조건으로 추출


# df["data1"] >= 0 がTrueとなる行のみからなるDataFrameを生成
# 行のインデックスは維持されるので、とびとびの番号になる
df[df["data1"] >= 0]

# SQLみたいにクエリすることもできる
df.query('data1 >= 30 and target == 1')

# クエリの中に文字列を入れたい場合は "" で囲む
df.query('target == "1"')

중복을 삭제한 값 목록을 가져옵니다.


df["target"].unique()
# => array([3, 2, 1])

숫자 열에 대한 통계량 가져오기


df.describe()



정렬



다음은 data1 열에서 행을 정렬한 DataFrame을 반환합니다.
# data1列の昇順
df.sort_values("data1")

# data1列の降順
df.sort_values("data1", ascending=False)

# 複数の列で並び替え
df.sort_values(["target", "data1"], ascending=False)

제1소트를 target 내림차순, 제2소트를 data1 오름차순으로 하려면 어떻게 하면 좋을까?

열 추가



이하의 예에서는, 기존의 열에 연산을 실시한 새로운 값의 열을 우단에 추가한다.
df["data_sum"] = df["data1"] + df["data2"] + df["data3"]



이상.

좋은 웹페이지 즐겨찾기