자언어처리 - 3 (pandas)

hoegon kim·2022년 10월 4일
0
post-thumbnail
post-custom-banner

데이터분석

데이터 분석을 위한 필수 패키지 삼대장이 있습니다.
바로 pandas와 numpy 그리고 matplotlib

1. 판다스

pip install pandas

데이터 구조

  1. 시리즈(Series)
  2. 데이터프레임(DataFrame)
  3. 패널(Panel)

1) 시리즈

시리즈 클래스는 1차워 배열의 값(values)에 각 값에 대응되는 인덱스(index)를 부여 할 수 있는 구조를 갖고 있습니다.

sr = pd.Series([17000, 18000, 1000, 5000],
               index=["피자", "치킨", "콜라", "맥주"])
print('시리즈 출력 :')
print('-'*15)
print(sr)

값(values)rhk 인덱스(index)를 출력합니다

print('시리즈의 값 : {}'.format(sr.values))
print('시리즈의 인덱스 : {}'.format(sr.index))
시리즈의 값 : [17000 18000  1000  5000]
시리즈의 인덱스 : Index(['피자', '치킨', '콜라', '맥주'], dtype='object')

2) 데이터프레임(DataFrame)

데이터 프레임은 2차원 리스트를 매개변수로 전달합니다.
2차원 이므로 행 방향 인덱스(index)와 열방향 인덱스(colum)가 존재합니다. 다시 말해 행과 열을 가지는 자료구조입니다. 시리즈가 인덱스(index)와 값(values)으로 구성된다면, 데이터 프레임은 열(columns)까지 추가되어 열(columns), 인덱스(index), 값(values)으로 구성됩니다. 이 세개의 구성 요소로 부터 데이터 프레임을 생성해 봅시다.

values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ['one', 'two', 'three']
columns = ['A', 'B', 'C']

df = pd.DataFrame(values, index=index, columns=columns)

print('데이터프레임 출력 :')
print('-'*18)
print(df)

데이터프레임 출력 :
------------------
       A  B  C
one    1  2  3
two    4  5  6
three  7  8  9
생성된 데이터프레임으로부터 인덱스(index), 값(values), 열(columns)을 각각 출력해보겠습니다.

print('데이터프레임의 인덱스 : {}'.format(df.index))
print('데이터프레임의 열이름: {}'.format(df.columns))
print('데이터프레임의 값 :')
print('-'*18)
print(df.values)
데이터프레임의 인덱스 : Index(['one', 'two', 'three'], dtype='object')
데이터프레임의 열이름: Index(['A', 'B', 'C'], dtype='object')
데이터프레임의 값 :
------------------
[[1 2 3]
 [4 5 6]
 [7 8 9]]

3) 데이터프레임의 생성

데이터프레임은 리스트(List), 시리즈(Series), 딕셔너리(dict), Numpy의 ndarrays, 또 다른 데이터프레임으로부터 생성할 수 있습니다. 여기서는 리스트와 딕셔너리를 사용하여 데이터프레임을 생성해보겠습니다. 우선 이중 리스트로 생성하는 경우입니다.

# 리스트로 생성하기
data = [
    ['1000', 'Steve', 90.72], 
    ['1001', 'James', 78.09], 
    ['1002', 'Doyeon', 98.43], 
    ['1003', 'Jane', 64.19], 
    ['1004', 'Pilwoong', 81.30],
    ['1005', 'Tony', 99.14],
]

df = pd.DataFrame(data)
print(df)
      0         1      2
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14
생성된 데이터프레임에 열(columns)을 지정해줄 수 있습니다. 열이름을 지정하고 출력해봅시다.

df = pd.DataFrame(data, columns=['학번', '이름', '점수'])
print(df)
     학번        이름     점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

딕셔너리 자료구조일 경우(json)

파이썬 자료구조 중 하나인 딕셔너리를 통해 데이터 프레임을 생성해봅시다.

# 딕셔너리로 생성하기
data = {
    '학번' : ['1000', '1001', '1002', '1003', '1004', '1005'],
    '이름' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
    '점수': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
    }

df = pd.DataFrame(data)
print(df)
     학번        이름     점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

데이터프레임 조회하기


아래의 명령어는 데이터프레임에서 원하는 구간만 확인하기 위한 명령어로서 유용하게 사용됩니다.

df.head(n) - 앞 부분을 n개만 보기
df.tail(n) - 뒷 부분을 n개만 보기
df['열이름'] - 해당되는 열을 확인
위에서 사용한 데이터프레임을 그대로 사용하여 실습해봅시다.

# 앞 부분을 3개만 보기
print(df.head(3))
     학번      이름     점수
0  1000   Steve  90.72
1  1001   James  78.09
2  1002  Doyeon  98.43
# 뒷 부분을 3개만 보기
print(df.tail(3))
     학번        이름     점수
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14
# '학번'에 해당되는 열을 보기
print(df['학번'])
0    1000
1    1001
2    1002
3    1003
4    1004
5    1005
Name: 학번, dtype: object

5) 외부 데이터 읽기

df = pd.read_csv('example.csv')
print(df)

post-custom-banner

0개의 댓글