title: “Pandas 정리(데이터 구조 소개)” categories:

  • AI

    #Pandas 정리(데이터 구조 소개) : 네이버 블로그

Pandas란?

pandas란, CSV, Excel, SQL 데이터베이스 테이블같은 데이터를 조작 및 분석을 위해 사용하는 파이썬 라이브러리입니다. NumPy를 기반으로 만들어졌으며 Numpy는 수학적 연산을 위한다면 pandas는 데이터 조작과 분석을 위한 라이브러리입니다.

귀여운 판다판다스

pandas라는 이름은 panel data에서 유래했다고 합니다

데이터 구조 소개

데이터를 저장하기 위해서 기본적으로 테이블을 이용합니다.

pandas에서는 1차원인 series, 2차원 dataframe, 3차원인 panel이 기본 데이터 구조입니다.

pandas를 이용하여 위와 같은 테이블들을 효과적으로 조작, 분석 하는것이 목표입니다.

Series

pandas 데이터의 기초형

index와 data로 이루어져 있습니다.

s = pd.Series(data, index=index)

위와 같이 파이썬에서 호출하면, series s를 만들 수 있습니다.

data에는 파이썬 딕셔너리, ndarray, 스칼라 값이 들어 갈 수 있습니다.

s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])

index는 값이 없으면 자동으로 0부터 채워지고, 값이 있다면 data의 길이와 index의 수가 같아야 합니다.

In [12]: pd.Series(5.0, index=["a", "b", "c", "d", "e"])

스칼라 값은 모든 index에 채워집니다.

series의 data는 모두 같은 dtype입니다.

series는 array로도 사용 할 수 있는데, s.array를 사용하면 됩니다.

series끼리의 계산은 label된 인덱스로 계산하지만, array끼리의 계산은 label을 무시하고 index로만 계산됩니다.

마찬가지로 s.to_numpy()를 사용하여 NumPy ndarray를 사용 할 수 있습니다.

series는 딕셔너리와 비슷하게 사용 할 수 있습니다.

In [21]: s["a"]
Out[21]: 0.4691122999071863

In [22]: s["e"] = 12.0

In [23]: s
Out[23]: 
a 0.469112
b -0.282863
c -1.509059
d -1.135632
e 12.000000
dtype: float64

In [24]: "e" in s
Out[24]: True

In [25]: "f" in s
Out[25]: False

series는 ndarray처럼 다음과 같은 연산이 가능합니다

s+s, S\*2, np.exp(s)

다른 점으로는, 서로 다른 키를 가진 series를 연산할 때, 합집합으로 이루어진다는 점입니다

s=pd.Series(5.0, index=["a", "b", "c", "d", "e"])

s[1:] + s[:-1]
output:
a NaN
b 10.0
c 10.0
d 10.0
e NaN
dtype: float64

추가적으로는 name을 설정 할 수 있습니다

s=pd.Series(5.0, index=["a", "b", "c", "d", "e"] ,name="something")
s[1:] + s[:-1]

a NaN
b 10.0
c 10.0
d 10.0
e NaN
Name: something, dtype: float64

DataFrame

행,열을 가지는 레이블 데이터 구조

DataFrame은 Series가 여러 개 라벨링 되어 있는 구조이다.

다음과 같은 구조를 input으로 사용 할 수 있습니다

  • 1차원 딕셔너리, ndarray, list, dict,m series
  • 2차원 numpy.ndarray
  • 구조화된 배열
  • 하나의 Series
  • 다른 DataFrame

직접 만들기 위해서는 다음과 같이 사용합니다

  • 딕셔너리에서
import pandas as pd

data = {
 'Name': ['Alice', 'Bob', 'Charlie'],
 'Age': [25, 32, 40],
 'Country': ['USA', 'Canada', 'Australia']
}

df = pd.DataFrame(data)
print(df)

  • Numpy에서
import pandas as pd
import numpy as np

data = np.array([
 ['Alice', 25, 'USA'],
 ['Bob', 32, 'Canada'],
 ['Charlie', 40, 'Australia']
])

df = pd.DataFrame(data, columns=['Name', 'Age', 'Country'])
print(df)

  • 또는 외부 파일에서
import pandas as pd

df = pd.read\_csv('data.csv')
print(df)

  • series에서.
import pandas as pd
ser = pd.Series(range(3), index=list("abc"), name="ser")
pd.DataFrame(ser)

series의 name이 DataFrame의 열 이름이 됩니다

DataFrame에서 칼럼 선택, 추가 삭제

  • 칼럼 선택
import pandas as pd
import numpy as np
data = {'one': [1.0, 2.0, 3.0, np.nan],
 'two': [1.0, 2.0, 3.0, 4.0]}
df = pd.DataFrame(data)
print(df["one"])

pandas에서는 대괄호 표기법을 이용하여 특정 열에 접근합니다.

df[“one”]은 one이라는 이름의 열을 series로 반환합니다.

  • 칼럼 추가
df["three"] = df["one"] \* df["two"]

위와 같이 기존의 “one”열과 “two”열의 값을 곱한 후 “three”라는 새 열을 추가 할 수 있습니다.

df["flag"] = df["one"] > 2

조견연산자를 이용하여 bool 열을 만들 수 도 있습니다

  • 칼럼 삭제

칼럼의 삭제는 del 키워드를 사용하거나 pop으로 삭제를 할 수 있다

# Column Deletion
del df["two"]
three = df.pop("three")
print(df)

  • 한 열을 스칼라 값으로 채우기
# Inserting Scalar Values
df["foo"] = "bar"
print(df)

업데이트: