티스토리 뷰
CSV 읽고 쓰기
- 읽기
df = pd.read_csv("./dataset.csv")
- 쓰기
df.to_csv("./dataset.csv", sep=',', float_format='%.f2', index=False)
경고 끄기
pd.set_option('mode.chained_assignment', None)
Data Frame 생성
d = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data=d)
Data Frame index reset
df.reset_index(inplace=True, drop=True)
행 선택/삭제
- iloc(integer-location based)로 행 선택
df.iloc[0] # 0 번째 행 선택 (행만 series로)
df.iloc[[0]] # 0 번째 행 선택 (행이 DF로)
df.iloc[[0, 1]] # 0 번째, 1 번째 행 선택
df.iloc[:2] # 0 번째, 1 번째 행 선택
df.iloc[0, 1] # 0행 1열의 값 선택
- loc(label based)로 행 선택
df.loc[[1, 2], :] # 1행과 2행 선택
- 조건 별 행 선택
# 조건이 1개인 행 선택
df[df['col1'] == 2]
# 조건이 2개인 행 선택
df[(df['col1'] ==2 ) & (df['col2'] == 5)]
- unique, isin
unique_col1 = df['col1'].unique().tolist()
new_df = df[df['col1'].isin(unique_col1)]
- isin not
# col1의 값이 1인 행 제외하고 선택
df = df[~df['col1'].isin([1])]
- 행 삭제
df.drop([0]) # index가 0인 행 삭제
df.drop([df.index[0]]) # index가 0인 행 삭제
- 특정 column에 nan이 있는 행 삭제
d = {'col1': [0, 1, 2, 3], 'col2': pd.Series([2, 3], index=[2, 3])}
df = pd.DataFrame(data=d, index=[0, 1, 2, 3])
df.dropna(subset=['col2'])
열(컬럼) 선택/삭제
- 특정 컬럼 선택
df['col1'] # col1 열 선택. (열만 series로)
df.col1 # col1 열 선택. (열만 series로)
df[['col1']] # col1 열 선택. (df로)
df['col1'].to_frame() # col1 열 선택 (df로)
df[['col1', 'col2']] # col1, col2 열 선택.
df.loc[:, ['col1', 'col2']] # col1, col2 열 선택.
- 특정 컬럼 제외하고 선택
df[df.columns.difference(['col1'])]
df.loc[:, df.columns!='col1']
- 특정 컬럼 삭제
df = df.drop(['col1', 'col2'], axis = 1)
df = df.drop(['col1', 'col2'], axis = column)
df.drop(['col1', 'col2'], axis = 1, inplace=True)
df = df.drop([df.columns[0], df.columns[1]], axis=1)
조건에 맞는 행과 열 선택
df[df['col1']==1][['col2']]
조건에 맞는 행 선택 후 특정 컬럼 값 변경
df[(df['권역코드*']=='K02') & (df['배송지역명']=='15.수원권')] # 특정 조건의 행 선택
df.loc[(df['권역코드*']=='K02') & (df['배송지역명']=='15.수원권'), '배송지역명'] = 55 # 이렇게하면 위에서 선택한 행의 배송지역명이 바뀜.
axis = 0, axis = 1 개념
m*n 행렬 (5*3행렬) | n열(3열) | axis=1 | |
m행(5행) | axis=0 |
axis = 0은 5*3 행렬에서 5에 해당. (행), axis = 1은 5*3 행렬에서 3에 해당. (열)
np.sum(array, axis = 0) 이면 [5개더하기, 5개더하기, 5개더하기]
np.sum(array, axis = 1) 이면 [3개더하기, 3개더하기, 3개더하기, 3개더하기, 3개더하기]
import warnings
warnings.fillterwarnings('ignore')
import pandas as pd
pd.options.display.float_format = '{:.2f}'.format
pd.set_option('display.max_columns', None)
df = sns.load_dataset("titanic")
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['font.family'] = 'NanumGothic'
plt.rcParams['figure.figsize'] = (12, 8)
'pandas' 카테고리의 다른 글
pd.to_datetime, strptime, strftime, (0) | 2022.07.15 |
---|---|
group by 후 custom된 집계함수 사용 (0) | 2022.06.16 |
차집합, 교집합, drop_duplicates, duplicated, indicator (0) | 2022.03.07 |
drop id max, datetime, 요일, one-hot encoding, lag, mms (0) | 2022.03.06 |
group/sort by, index, series, array, rename, concat, merge, type (0) | 2022.03.06 |
댓글
- Total
- Today
- Yesterday
공지사항
최근에 올라온 글
글 보관함