반응형
#Series 데이터: numpy의 array가 보강된 형태로 data,index를 가짐
import pandas as pd
data = pd.Series([1,2,3,4])
data.values 가 numpy의 arr와 동일
#- 인덱스를 지정할 수 있고 인덱스로 접근 가능
data = pd.Series([1,2,3,4], index=[‘a’,‘b’,‘c’,‘d’])
# data[‘c’]=3
#Dictionary를 활용하여 Series 생성 가능
population_dict={
‘china’:141500,
‘korea’ : 5180,
‘usa’:32676
}
population = pd.Series(population_dict)
# key값이 index가 되고 value값이 data가 됨
#Dataframe
#dictionary를 활용하여 dataframe 생성 가능
data = {'country': ['china','japan','korea','usa'],
'gdp': [1409250000,516700000, 169320000, 2041280000],
'population': [141500,12718, 5180, 32676]}
country = pd.DataFrame(data)
country = country.set_index('country')
#데이터 프레임 저장 및 불러오기 기능
country.to_csv("./country.csv")
country.to_excel("country.xlsx")
country = pd.read_csv("./country.csv")
country = pd.read_excel("country.xlsx")
#.loc: 명시적인 인덱스를 참조하는 인덱싱/슬라이싱(iloc는 암묵적인 인덱스 참조 ex: 찾는 내용이 있는지 잘모를 때)
country.loc[‘china’]
country.loc['japan':'korea', :'population']
#.iloc: 파이썬 스타일의 정수 인덱스 인덱싱/슬라이싱
country.iloc[0]
country.iloc[1:3, :2] #앞에는 인덱스 뒤에는 컬럼
# 컬럼명을 활용하여 dataframe에서 데이터 선택 가능
country['gdp'] # => Series 데이터 형태
country[['gdp']] # => DataFrame 데이터 형태
country[country['population'] < 10000] # masking 연산 활용
# masking 활용시 두 개 조건을 검색할 땐 country[조건 &조건]
country.query("population> 100000") # query 함수 활용
# query 활용 시 두 개 조건을 검색할 땐 country.query(‘조건 & 조건’)
#Series도 numpy array처럼 연산자 활용 가능
gdp_per_capita= country['gdp'] / country['population']
country['gdp_per_capita'] = gdp_per_capita
# 데이터 추가/변경
df = pd.DataFrame(columns=['이름','나이','주소']) # 데이터 프레임 생성
df.loc[0] = ['길동', '26', '서울'] # 리스트로 데이터 추가
df.loc[1] = {'이름':'철수', '나이':'25', '주소':'인천'} # 딕셔너리로 데이터 추가
df.loc[1, '이름'] = '영희' # 명시적 인덱스 활용하여 데이터 수정
# nan으로 초기화 가능
df['전화번호'] = np.nan #새로운 컬럼 추가 후 초기화
df.loc[0, '전화번호']='01012341234' #명시적 인덱스 활용하여 데이터 수정
# 데이터 삭제
df.drop(‘전화번호’, axis=1,inplace=True)
# axis=1이면 열 방향 0이면 행 방향
# inplace가 true면 원본을 변경 false면 원본을 변경하지 않음
# 데이터 프레임 정렬 (default는 오름차순)
# 인덱스 정렬
df = df.sort_index(axis=0)
df = df.sort_index(axis=1, ascending= False) # 내림차순 컬림 정렬
# 컬럼 값 정렬(col1은 컬럼 이름)
df.sort_values(‘col1’,ascending=False)
# col2 컬럼 기준 오름차순 정렬 후 col1 컬럼 기준 내림차순 정렬(and라고 생각하면 됨)
df.sort_values(['col2', 'col1'], ascending= [True, False])
# 데이터프레임 분석용 함수
# count
data = {'korean': [50, 60, 70],
' math': [10, np.nan, 40]
}
df = pd.DataFrame(data, index = ['a','b','c'])
df.count(axis = 0) # 열기준
df.count(axis = 1) # 행기준
# max, min (default가 열 기준, NaN 값 제외)
df.max()
df.min()
# dtype가 float라는 점 유의
sum, mean
df.sum() #합
df.mean() #평균
df.sum(axis=1) #행 합계
df.mean(axis=1, skipna = False) #행 평균, NaN 값을 무시하지 않음
B_avg= df[‘math’].mean()
print(B_avg) # 25.0 float임
df[‘math’] = df[‘math’].fillna(B_avg) # NaN 값 대체
df.mean(axis=1, skipna= False)
# 그룹으로 묶기
df=pd.DataFrame({'data1':range(6),
'data2':[4,4,6,0,6,1],
'key':['A','B','C','A','B','C']
})
df.groupby('key').sum() # key 값 기준으로 그룹화
df.groupby(['key','data1']).sum() #key 값 기준으로 그룹화 한다음 data1 값 기준으로 그룹화
# aggregate: groupby를 통해서 집계를 한번에 계산하는 방법
df.groupby(‘key’).aggregate([‘min’, np.median, max])
df.groupby(‘key’).aggregate({‘data1’: ‘min’, ‘data2’: np.sum})
# filter: groupby를 통해서 그룹 속성을 기준으로 데이터 필터링
def filter_by_mean(x):
return x[‘data2’].mean() > 3
df.groupby(‘key’).filter(filter_by_mean)
# - apply, lambda: groupby를 통해서 묶인 데이터에 함수 적용
df.groupby(‘key’).apply(lambda x: x.max() - x.min())
# - get_group: groupby로 묶인 데이터에서 key 값으로 데이터를 가져올 수 있음
df=pd.read_csv("./univ.csv")
#상위5개데이터
df.head()
#데이터추출
df.groupby("시도").get_group("충남")
len(df.groupby("시도").get_group("충남"))
#94
반응형
'AI & Data' 카테고리의 다른 글
Apache Flink에 대해.. (1) | 2024.01.24 |
---|---|
비지도 학습 (0) | 2021.11.07 |
Matplotlib 기초 학습 내용 (0) | 2021.10.30 |
머신러닝 기초 학습 내용 (0) | 2021.10.29 |
numpy 기초 내용 학습 (0) | 2021.10.29 |