Pandas 1

·2023년 10월 23일

인공지능

목록 보기
5/19

Pandas

import pandas as pd
from pandas import Series, DataFrame
import math

series

  • Series는 1차원 데이터 객체입니다. 여기서 차원이란 변수의 수이고, 데이터 객체란 데이터를 담고 있는 그릇과도 같습니다. 물리적 공간에서 차원이 높아질수록 점, 선, 면을 표현하기 위한 축의 개수가 더 많아지듯, 데이터 공간에서도 차원이 높아질수록 자료구조가 더 많은 데이터 층위(layer)를 갖습니다.

  • Series를 자료구조와 비교하자면 Series는 키(key)에 대응하는 값(value)이 1개인 딕셔너리(dictionary)와도 같습니다. Series에서 인덱스-값의 관계는 딕셔너리에서 키-값의 관계에 대응합니다. Series에 변수의 수가 추가되면 DataFrame이 됩니다. 벡터(vector) 관점에서 보면 Series는 1차원 벡터 데이터(A = [1, 5, 3, 4])에 행 인덱스(row index)를 붙인 것이기도 합니다. 요약하자면 Series는 변수의 수가 1개인 자료구조, 열이 1개인 DataFrame입니다.

1

obj = pd.Series([4, 7, -5, 3]) #Series는 1차원 데이터 구조
obj

#결과:
0 4
1 7
2 -5
3 3
dtype: int64

2

print(obj.values) ## obj의 내용 출력
print(obj.index)  # like range(4)  ## obj의 인덱스 출력

#결과:
[ 4 7 -5 3]
RangeIndex(start=0, stop=4, step=1)

3

obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])  # index 임의로 설정하기 ## 인덱스가 0, 1, 2, 3... 이 아닌 d, b, a, c가 됨
print(obj2)

#결과:
d 4
b 7
a -5
c 3
dtype: int64

4

obj2.index

#결과:
Index(['d', 'b', 'a', 'c'], dtype='object')

5

print(obj2['a']) # obj2에서 index가 'a'인 값 출력
obj2['d'] = 6 # index 'd'의 value 변경 : 4 -> 6
print(obj2[['c', 'a', 'd']]) #원하는 인덱스만 출력할 때

#결과:
-5
c 3
a -5
d 6
dtype: int64

6

print(obj2 > 0) #참과 거짓으로 출력
obj2[obj2 > 0] #obj2의 value가 0 이상인 경우에만 출력

#결과:
d True
b True
a False
c True
dtype: bool
d 6
b 7
c 3
dtype: int64

7

print(obj2 * 2) #각 원소 곱하기 2
print(math.e**obj2)  # exponential 함수 #**은 제곱

#결과:
d 12
b 14
a -10
c 6
dtype: int64
d 403.428793
b 1096.633158
a 0.006738
c 20.085537
dtype: float64

8

print('b' in obj2.index) ## b가 obj.index에 있으면 True 없으면 False 출력
print('e' in obj2.index)

#결과:
True
False

9

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000} #딕셔너리
print(sdata)
obj3 = pd.Series(sdata) ## 딕셔너리를 Series로 변환
obj3

#결과:
{'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64

10

states = ['California', 'Ohio', 'Oregon', 'Texas'] ## 리스트
print(states)
obj4 = pd.Series(sdata, index=states) ## 리스트를 Series로 변환
obj4 ## value 가 float형으로 찍히는 이유 : pd.Series 함수를 사용하여 데이터를 pandas Series로 변환할 때, NaN (Not a Number) 값을 포함하게 되면 해당 Series의 모든 데이터는 실수형으로 자동 변환됩니다.
## 만약 NaN 값이 없다면, 원래의 데이터 타입을 유지할 수 있습니다

#결과:
['California', 'Ohio', 'Oregon', 'Texas']
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64

11

pd.isnull(obj4)  # null 있는지 확인

#결과:
California True
Ohio False
Oregon False
Texas False
dtype: bool

12

pd.notnull(obj4)  # null 없는지 확인

#결과:
California False
Ohio True
Oregon True
Texas True
dtype: bool

13

obj4.isnull()  # null 있는지 확인하는 또 다른 형태

#결과:
California True
Ohio False
Oregon False
Texas False
dtype: bool

profile
공부 기록

0개의 댓글