ML & DL/데이터 분석

[python] Pandas 기초

uni2237 2021. 10. 3.
728x90
728x90

pandas

구조화된 데이터 효과적으로 처리

numpy의 array가 보강된 형태 , data 와 index 가짐

 


Series 

1차원 다룸, Series 는 값(values)을 ndarray형태로 가짐.

import pandas as pd
data = pd.Series([1,2,3,4])
print(data)
'''
0 1
1 2
2 3
3 4
'''

print(type(data)) # <class 'pandas.core.series.Series'>
print(data.values) # [1 2 3 4]
print(type(data.values)) # <class 'numpy.ndarray'>

 

dtype인자로 데이터 타입 지정가능

data = pd.Series([1,2,3,4],dtype="float")
print(data.dtype) #float64

 

인덱스를 지정가능 , 인덱스로 접근 가능

data = pd.Series([1,2,3,4], index =['a','b',',c','d'])
data['c']=5

 

Dictionary를 활용해서 Series 생성 가능

import pandas as pd

pop_dict={
    'name':'uni',
    'age':'24'
}
data = pd.Series(pop_dict)
print(data)

'''
name    uni
age      24
dtype: object
'''

 


DataFrame

2차원 다룸, Dictionary로 DataFrame 생성 가능

import pandas as pd
pop_dict={
	'id':['a1','a2'],
    'name':['uni','yunhui'],
    'age':['24','7']
}
data = pd.DataFrame(pop_dict)
data = data.set_index('id')

 

dataframe 속성확인

print(data.shape) # (2,2)
print(data.size) # 4
print(data.ndim) # 2
print(data.index) # Index(['a1', 'a2'], dtype='object', name='id')
print(data.values) 
'''
[['uni' '24']
 ['yunhui' '7']]
'''

 

dataframe의 index와 column에 이름 지정

data.index.name = "person_id"
data.columns.name="Info"

print(data.index) # Index(['a1', 'a2'], dtype='object', name='person_id')
print(data.columns) # Index(['name', 'age'], dtype='object', name='Info')

 

dataframe 저장 및 불러오기 가능

data.to_csv("./person.csv") # csv파일로 저장

data=pd.read_csv("./person.csv") # csv파일을 dataframe으로 불러오기

 

여러개의 시리즈 데이터를 합쳐 하나의 dataframe으로 만들기

dict1 = {
    'apple': 12,
    'banana': 13,
    'cherry': 14,
    'lemon': 15
}
stock = pd.Series(dict1) # series 1

dict2 = {
    'apple': 1111,
    'banana': 2222,
    'cherry': 3333,
    'lemon': 4444
}
price = pd.Series(dict2) # series 2

fruit=pd.DataFrame({
	'stock(개)':stock,
	'price(원)':price
}) # dictionary의 value 값을 series들로 넣고, 그것을 dataframe 형태로 바꾸면 됨!

 


데이터 선택 - Indexing / Slicing

.loc : 명시적인 인덱스를 참조하는 인덱싱/슬라이싱   (a:b 이면 b 도 포함함!)

.iloc : 파이썬 스타일의 정수 인덱스 인덱싱/슬라이싱 (a:b 이면 b-1까지 포함!)

 

 

컬럼명으로 DataFrame에서 데이터 선택 가능

 

 

Masking 연산이나 query함수으로 조건에 맞는 DataFrame 행 추출 가능

 

 

 

Series도 numpy array처럼 연산자 활용 가능

 

데이터 변경 - 데이터 추가/수정

 

NaN값으로 초기화 한 새로운 컬럼 추가

 

DafaFrame에서 컬럼 삭제 후 원본 변경

 

728x90
728x90

댓글