@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • bedrock agent
  • invokemodel api
  • knowledge bases
  • Python
  • bedrock api
  • java
  • 인터페이스
  • 심폴릭링크
  • 티스토리챌린지
  • sagemaker unified studio
  • AWS CodeStar
  • AWS CodeArtifact
  • SageMaker
  • Agent
  • flink
  • AWS CodeCatalyst
  • converse api
  • CLASS
  • 오블완
  • bedrock

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

AI & Data

pandas 기초 학습 내용

2021. 10. 29. 20:46
반응형
#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
    'AI & Data' 카테고리의 다른 글
    • 비지도 학습
    • Matplotlib 기초 학습 내용
    • 머신러닝 기초 학습 내용
    • numpy 기초 내용 학습
    @Eeap
    @Eeap

    티스토리툴바