class 클래스_이름:
클래스_변수 = '값'
# 생성자를 통한 변수 초기화
def __init__(self, 초기값):
self.초기값 = 초기값
# 메소드 == 함수
def 메소드_이름(self):
return self.초기값
객체 = 클래스_이름('초기값')
객체.새로운_값 = '새값'
Sex
column을 삭제한 뒤 진행import pandas as pd
df = pd.read_csv('test.csv')
df_org = df.copy()
df = df_org.drop('Sex', axis=1)
pd.concat([df.head(), df.sample(5), df.tail()])
Name
으로 Sex
을 파악한 뒤, Sex
column에 등록# 중간 이름에 성별을 구분할 수 있는 단어가 존재함
df['Sex'] = df['Name'].apply(lambda row : row.split(',')[1].split(' ')[1])
' '.join(df['Sex'].value_counts().index)
# Mr. Miss. Mrs. Master. Col. Rev. Ms. Dr. Dona.
# 남자 : Mr.(미혼, 기혼 남성) Col.(대령) Rev.(목사) Dr.(의사)
# 여자 : Miss.(미혼) Mrs.(기혼) Ms.(미혼, 기혼 여성) Dona.(귀부인)
# 알수 없음 : Master
change = {
'Mr.' : 'male',
'Miss.' : 'female',
'Mrs.' : 'female',
'Master.' : None,
'Col.' : 'male',
'Rev.' : 'male',
'Ms.' : 'female',
'Dr.' : 'male',
'Dona.' : 'female'
}
df.replace({'Sex':change}, inplace=True)
Age
항목의 결측치를 파악해 아래 중 하나 수행결측치를 0
으로 대체 (fillna 함수 이용 가능)
df['Age'].fillna(0)
전체 값의 평균
으로 대체 (mean 함수 이용 가능)
df['Age'].fillna(df['Age'].mean())
중앙값
으로 대체 (median 함수 이용 가능)
df['Age'].fillna(df['Age'].median())
변화 확인
import matplotlib.pyplot as plt
plot_num = len(datas)
fig, axes = plt.subplots(plot_num, 2, figsize = (8 * 2, plot_num * 8))
titles=['base', '0', 'mean', 'median']
for i in range(2):
for j in range(plot_num):
if i == 0:
datas[j].plot.box(ax=axes[j][i])
else:
datas[j].plot.hist(ax=axes[j][i])
axes[j][i].set_title(titles[j])
남성
이며 나이가 10대인
사람을 O, 아닌 사람을 X로 표기해 check column
을 만들어 저장df['check'] = (df['Sex'] == 'male') & (10 <= df['Age']) & (df['Age'] < 20)
df['check'].replace({True:'O', False:'X'}, inplace = True)
# 또는
query_expr = "Sex == 'male' and 10 <= Age < 20"
df['check'] = 'X'
df.loc[df.query(query_expr).index, 'check'] = 'O'
df.to_csv('result.tsv', sep='\t')
df[['SibSp', 'Fare']].corr('spearman')
df.plot.scatter(x='SibSp', y = 'Fare')
df['Ticket'] = df['Ticket'].apply(lambda row : int(row.split()[-1]))
df.plot.scatter(x='Embarked', y = 'Ticket')
df.pivot_table('Ticket', 'Embarked', aggfunc=[np.min, np.mean, np.median, np.max])
df = pd.read_json('한국산업기술평가관리원_지역발전정책용어사전_20220627.json')
# null = None
df.replace({'null': None}, inplace =True)
print(
df.loc[
df['참고자료문헌'].str.contains('MZ세대').fillna(False),
'참고자료문헌'
].values[0]
)
# 또는
print(
df.loc[
df['정책용어'] == 'MZ세대',
'참고자료문헌'
].values[0]
)
print(
df.loc[
df['정책용어'] == '고령친화우수식품',
'해외사례'
].values[0]
)
df.loc[df['참고자료문헌'].str.contains('http').fillna(False), '정책용어'].values
# 또는
df[['http' in i for i in df['참고자료문헌']]]
df.loc[df['생성배경'].isnull(), '정책용어'].values
idxs = df[df['용어설명'].fillna('').str.contains('고령')].index
for i in df.columns[1:]:
idxs = idxs | df[df[i].fillna('').str.contains('고령')].index
# 또는
df[df.apply(lambda col : col.str.contains('고령')).sum(axis=1) != 0]
text = ' '.join(df['참고자료문헌'].fillna(''))
text_sorted = sorted(text)
from collections import Counter
cnt = Counter(text_sorted)
len(cnt)
for i in range(0, len(cnt), int(len(cnt) / 20)):
print('\t'.join(list(cnt.keys())[i:i + 20]))
print('\t'.join(map(str, list(cnt.values())[i:i + 20])))
print()
# 갈호 기준으로 추출
df[df['참고자료문헌'].str.contains('\(').fillna(False)]
꼼꼼한 정리 잘 봤습니다~! 블로그 챌린지의 새로 안내드린 태그도 같이 입력해주시면 저 제니아는 더 큰 감동을 받을 것 같아요...(●'◡'●) 2월의 마지막도 3월의 시작도 화이팅입니다!!! ^^