1. Pandas의 간단 정리
Pandas는 파이썬 라이브러리, 구조화된 데이터를 효과적으로 처리, 저장할 수 있고 array 계산에 특화된 numpy를 기반으로 설계되었다.
1) Series 데이터
numpy의 array가 보강된 형태이며 data와 인덱스를 가지고 있다. series는 값을 ndarray의 형태로 가지고 있다.
import pandas as pd
data = pd.Series([1,2,3,4])
print(data) # 각 인덱스가 저절로 0,1,2,3 정해지고 순서대로 1,2,3,4 값이 지정
print(type(data)) #<class ‘pandas.core.series.Series’>
print(type(data.values)). # <class ‘numpy.ndarray’>
2) Dtype 인자로 데이터 타입을 지정할 수 있다.
data = pd.series([1,2,3,4], dtype=“float”)
print(data.dtype) # float64 타입으로 지정
3) 인덱스를 지정할 수 있고, 인덱스로 접근 가능
Data = pd.series([1,2,3,4]), index=[‘a’, ‘b’, ‘c’, ‘d’])
data[‘c’] =5 인덱스로 접근하여 요소 변경 가능
4) Dictionary를 활용하여 Series 생성 가능
population_dict = {
‘china’ : 1415,
‘Korea’ : 121
}
population = pd.series(population_dict) -> 국가명이 인덱스
DataFrame에 관하여
DataFrame은 여러개의 series가 모여서 행과 열을 이룬 데이터를 의미한다.
1) 여러개의 Series를 모아 DataFrame생성 방법
import numpy as np
import pandas as pd
# 두 개의 시리즈 데이터가 있습니다.
print("Population series data:")
population_dict = {
'korea': 5180,
'japan': 12718,
'china': 141500,
'usa': 32676
}
population = pd.Series(population_dict)
print("GDP series data:")
gdp_dict = {
'korea': 169320000,
'japan': 516700000,
'china': 1409250000,
'usa': 2041280000,
}
gdp = pd.Series(gdp_dict)
# 이곳에서 2개의 시리즈 값이 들어간 데이터 프레임을 생성합니다.
print("<Country DataFrame>")
country = pd.DataFrame({
'population': population,
'gdp' : gdp
})
print(country)를 하게 되면 아래처럼 실행 결과가 나오는 것을 확인할 수 있다.
<Country DataFrame>
population gdp
korea 5180 169320000
japan 12718 517800000
china 141500 1409250000
usa 32676 2041280000
2) dictinary 를 활용하여 DataFrame 생성 가능
data= {
‘country’ : [‘china’, ‘korea’],
‘gap’ : [12412, 123],
‘population’ : [123,123]
}
country = pd.DataFrame(data) # 위에서 만든 데이터
country = country.set_index(‘country’) # 국가를 index로 지정
Country gdp population
country
China 12412 123
Korea 123 123
3) DataFrame 다양한 특성
Dataframe 속성 확인 방법 -> shape, size, ndim, values 등이 있다.
Dataframe 의 인덱스와 칼럼에 이름 지정 표현
country.index.name = “Country”
country.columns.name = “info”
Dataframe 저장 및 불러오기 기능
country.to_csv(“ ./country.csv”)
csv -> comma separated value
country = pd.read_csv(“./country.csv”)
country.to_excel(“country.xlsx”)
country = pd.read_excel(“country.xlsx”)
4) DataFrame 데이터 선택 및 변경
1. .loc : 명시적인 인덱스를 참조하는 인덱싱/ 슬라이싱
country.loc[‘china’] ->인덱싱
country.loc[‘japan’ : ‘korea’, : ‘population’] ->슬라이싱
[Japan~korea까지 추출 , gap~ population까지 추출]
2. .iloc : 파이썬 스타일의 정수 인덱스 인덱싱/슬라이싱 (암묵적인 순서 -> 값)
country.iloc [0] #인덱싱
country.iloc [1:3, :2] #슬라이싱
3. 칼럼명을 활용하여 dataframe에서 데이터 선택 가능
country
country[‘gdp’] ->series ( gdp 칼럼이 안타 나남)
country[[‘gdp’]] ->dataframe ( gdp 칼럼이 나타남)
4. Masking 연산이나 query 함수를 활용하여 조건에 맞는 DataFrame행 추출 가능
country [country[‘population’] <10000] -> Masking 연산 활용
country.query(“population > 10000”) -> query 활용
5. series도 numpy array처럼 연산자 활용 가능
gdp_per_capita = country[‘gdp’]/country[‘population’]
country[‘gdp per capita’] = gdp_per_capita
6. 리스트로 추가 or 딕셔너리로 추가하는 방법
df = pd.DataFrame(columns = [‘이름’, ’ 나이’, ’ 주소’])
df.loc [0] = [‘길동’, ’ 26’, ’ 서울’]
df.loc [1] = {‘이름’ : ‘철수’, ‘나이’ :26, ‘주소’=‘인천’}
df.loc [1, ‘이름’] = ‘영희’ #철수 -> 영희로 데이터 수정
nan값으로 초기화한 새로운 칼럼 추가
df[‘전화번호’] = np.nan
cf) nan ->not a number(비어있는 데이터라는 뜻) #새로운 칼럼 추가 후 초기화
df.loc [0, ’ 전화번호’] = ’ 01012341234’ #명시적 데이터 추가
df.drop(‘전화번호’ , axis =1, inplace =True) # 칼럼 삭제, (axis =1 :열 방향 / axis =0 : 행방 향)을 의미
inplace = True : 원본 변경 o / inplace = False : 원본 변경 x )
cf)
np.random.randint : 모든 숫자 중 1개 선택하여 뽑을 때 사용
np.random.rand(m, n) : m과 n의 0~1 난수 배정할 때 사용
'Python > Alice Python Basic' 카테고리의 다른 글
Python 기초 프로그래밍의 간단 정리6 (1) | 2021.07.11 |
---|---|
Python 기초 프로그래밍의 간단 정리5 (0) | 2021.07.08 |
Python 기초 프로그래밍의 간단 정리3 (0) | 2021.07.07 |
Python 기초 프로그래밍의 간단 정리2 (0) | 2021.07.07 |
Python 기초 프로그래밍의 간단 정리1 (0) | 2021.07.07 |