파이썬 추가 학습
- 파이썬 리스트(list) 특성
자체적인 기능(메서드) 활용과 파이썬 기본 함수를 활용한 재할당이 필요한지 구분할 필요가 있다.
- 리스트 메서드
1) 리스트 안에서 찾고자 하는 원소의 갯수 찾기 : [list].count()
2) 리스트 안에서 찾고자 하는 원소의 위치 : [list].index
리스트 안에 중복된 원소들이 있을 경우 가장 앞의 것을 기준으로 index위치를 찾음
- 리스트에서 인덱스와 값을 같이 활용하려면 : enumerate(리스트) 활용
for idx, val in enumerate(list):
print(idx, val)
- 리스트 순서 뒤집기: reverse
a = [15,22,8,79,10]
a.reverse()
- 딕셔너리
1) 딕셔너리 안에 개별 원소 삭제 : 파이썬 del 함수 활용
# 딕셔너리 안에 z라는 키 값을 제거
del dictionary["z"]
2) 딕셔너리 전체 삭제하기 : 파이썬 del 함수 활용
del dictionary
3) 딕셔너리 내부만 비우기 : dictionary.clear() 함수 활용
- 파이썬 정렬(sort)
파이썬에서 정렬하는 방식은 크게 2가지 방식이 있다.
1) [List].sort() 메서드 방식 : 원본 리스트가 변형된다.
2) 파이썬 sorted() 함수 : 원본은 유지되므로 결과를 재할당해서 처리한다.
# 정렬 사용하기
a = [15,22,8,79,10]
# sort() 메서드 사용
a.sort()
# 파이썬의 sorted() 함수 사용
a = sorted(a)
print(a)
=> [8,10,15,22,79]
3) 그 외에도 lambda함수를 사용해서 임의의 기준으로 정렬할 수도 있다.
# 내가 만든 기준으로 정렬하기
str_list = ['좋은하루', 'good morning', '굿모닝', 'niceday']
# 정렬1 : 글자의 앞글자 1개만 가지고 정렬
sorted(str_list, key=lambda x: x[0])
# 정렬2 : 글자 개수로 정렬
sorted(str_list, key=lambda x: len(x))
#------------------------------------
# 심화 : 더 복잡한 형태의 리스트 정렬(이름과 점수 리스트)
zumsu_list = [('A',0), ('B',1),('C',5),('D',3),('E',5)]
# 정렬1 : 이름 기준 정렬
sorted(zumsu_list, key=lambda x: x[0])
# 정렬2 : 성적 높은 순으로 정렬
sorted(zumsu_list, key=lambda x: x[1], reverse=True)
# 정렬3 : 이름의 첫번째 글자 기준 정렬하고 기준이 같다면 성적을 내림차순으로 정렬
# reverse를 사용하지 않고 '-'기호를 붙여서 내림차순 정렬 가능
sorted(zumsu_list, key=lambda x: (x[0], -x[1]))
Pandas (2)
pandas의 기본적인 접근 방식
- 1개 값에 접근하기 : at(인덱스 명으로 접근), iat(정수 인덱스로 접근)
- 여러개 값에 접근 : loc(컬럼 명으로 접근), iloc(정수 인덱스 여러개 접근)
Series_index = pd.Series(
data = [10000,10300,9900,10500,11000],
index = ["2023-12-01","2023-12-02","2023-12-03","2023-12-04","2023-12-5",]
)
# 비공식적 활용법
Series_index[0]
# at/iat 활용
Series_index.at["2023-12-04"]
Series_index.iat[0]
# loc/iloc 활용
Series_index.iloc[0:4]
Series_index.loc["2023-12-02":"2023-12-04"]
DataFrame
pandas에서 2차원에 대한 자료형을 DataFrame이라고 한다.
가로줄 인덱스와 세로줄 인덱스가 존재하며, 각각의 명칭은 index, columns 이다.
각각의 인덱스를 직접 호출하는 것도 가능하다.
import pandas as pd
d = [1,2,3,4,5]
df = pd.DataFrame(d)
# 가로줄 인덱스
df.index
# 세로줄 인덱스
df.columns
DataFrame안에서 다양한 것들이 가능하다.
# 컬럼명 변경
df.columns = ['cols']
df.rename(columns={'cols': 'rename_cols'}, inplace=True)
# 새로운 컬럼명 추가
df['new_col'] = 5 # new_col 안에 5라는 데이터로 채워짐
# 컬럼간 계산
df["calculated_col"] = df["col1"] + df['col2'] # 컬럼간 더하기
df["calculated_col"].min() # 컬럼 내 최소값 구하기
df["calculated_col"].max() # 컬럼 내 최대값 구하기
# 컬럼 삭제
del df['col'] # 방법1
df.drop('col', axis=1, inplace = True) # 방법2
# 열과 행 바꾸기
df.T
# 데이터 타입 확인하기
df.dtypes
# 행과 열의 수 파악
df.shape
# index 순서 다시 0부터 순서대로 부여하기
df.reset_index(inplace=True)
# 정렬
df.sort_values(by='cols', ascending = False)
# 순위 매기기
df['cols'].rank(method='max')
'ASAC 빅데이터전문가과정 > Python' 카테고리의 다른 글
ASAC 17일차 _ 파이썬(Python) Numpy/Pandas 4일차, WebCrawling(1) : Json(1) (6) | 2024.07.24 |
---|---|
ASAC 16일차 _ 파이썬(Python) Numpy/Pandas 3일차 (0) | 2024.07.08 |
ASAC 14일차 _ 파이썬(Python) Numpy/Pandas 1일차 (0) | 2024.03.03 |
ASAC 9일차 _ 파이썬(Python) 5일차 (0) | 2024.03.02 |
ASAC 8일차 _ 파이썬(Python) 4일차 (0) | 2024.01.24 |