Programming

Python pandas 를 이용한 데이타 분석

신농해태 2022. 3. 27. 00:51
반응형

import pandas as pd

 

temp = pd.Series([-20, -10, 10,20])
print(temp)

 

temp = pd.Series([-20, -10, 10,20],index=['jan','feb','mar','apr'])
temp

 

data = {
    '이름' : ['채치수', '정대만','송태섭','서태웅','강백호','변덕규','황태산','윤대협'],
    '학교' : ['북산고','북산고','북산고','북산고','북산고', '능남고','능남고','능남고'],
    '키' : [197, 184, 168, 187, 188, 202, 188, 190],
    '국어' : [90, 40, 80, 40, 15, 80, 55, 100],
    'sw특기' : ['Python', 'Java', 'Javascript', '','', 'c', 'python', 'c#']
}

data['이름']

 

import pandas as pd
df = pd.DataFrame(data)

df

 

df.index.name = '지원번호'


df.reset_index(drop=True, inplace = True)

df = pd.DataFrame(data, index=['1번','2번','3번','4번','5번','6번','7번','8번'])

 

df.set_index('이름')

df.set_index('이름', inplace=True)

df.sort_index()

df.sort_index(ascending=False)

 

df.to_csv('score.csv', encoding = 'utf-8-sig')

df.to_csv('score.txt', sep='\t')

df.to_excel('score.xlsx')

 

df = pd.read_csv('score.csv', skiprows=[0,1,2])

df = pd.read_csv('score.csv', nrows=3, skiprows=1)

df = pd.read_csv('score.txt',sep='\t', index_col = '지원번호')

df = pd.read_excel('score.xlsx')
df

 

df.describe()

df.info()

df.head()

df.head(7)

df.tail()

df.values

df.index

df.columns

df.shape

df['키'].describe()

df['키'].min()

df['키'].max()

df['키'].nlargest(3)

df['키'].mean()

df['키'].sum()

df['학교'].unique()

df['학교'].nunique()

 

df[['키','이름']]

df.columns[0]    

df[df.columns[0]]

df.columns[-1]

df['국어'][1:5]

df[3:5]

 

df.loc[1]

df.loc[[0,1],'국어']

df.loc[[0,1],['국어','키']]

df.loc[1:5, '이름':'국어']

 

df.iloc[0]

df.iloc[4]

df.iloc[0:5]

df.iloc[0,2]

df.iloc[[0,1],2]

df.iloc[[0,1],[2,3,4]]

 

df['키']>=185

filt = (df['키'] >= 185)
df[filt]

df[~filt]

df[df['키']>=185]

df.loc[df['키']>=185,'국어']

df.loc[df['키']>=185,['이름','국어']]

df.loc[(df['키']>=185) & (df['학교']=='북산고')]

df.loc[(df['키']<170) | (df['키']>200)]

filt = df['이름'].str.startswith('송')
df[filt]

filt2 = df['이름'].str.contains('태')
df[filt2]

df[~filt2]

langs = ['python', 'Java']
filt3 = df['sw특기'].isin(langs)
df[filt3]

langs = ['python','java']
filt = df['sw특기'].str.lower().isin(langs)
df[filt]

filt = df['sw특기'].str.contains('Java', na = False)
df[filt]

 

df.fillna('')

df.fillna('없음')

df['학교'] = np.nan

df.fillna('모름')

df.fillna('오름', inplace = True)

df['sw특기'].fillna('확인중', inplace=True)

df = pd.read_excel('score.xlsx')
df.dropna()

df.dropna(axis='index', how="any")

df.dropna(axis='columns')

 

df.sort_values('키')

df.sort_values('키', ascending=False)

df.sort_values(['키','국어'], ascending=False)

df.sort_values(['키', '국어'], ascending=[True, False])

df['키'].sort_values()

df.sort_index()

df.sort_index(ascending=False)

 

df['학교'].replace({'북산고':'상북고', '능남고':'무슨고'})

df['sw특기'] = df['sw특기'].str.lower()

df['학교']=df['학교']+'등학교'

df['총합'] = [455,205, 280, 325, 90, 440, 240, 465]

df['결과']='fail'

df.loc[df['총합'] > 400, '결과'] ='pass'

df.drop(columns=['총합'])

df.drop(index=4)

filt = df['국어'] < 80
df[filt]

df[filt].index

df.drop(index=df[filt].index)

df.loc[8]=['9번','이정환','해남고등학교',184,90,'Kotlin',450,'pass']

df['학교'].replace({'북산고등학교등학교등학교':'북산고등학교','능남고등학교등학교등학교':'능남고등학교'}, inplace=True)

df.loc[3,'sw특기']='python'

df.loc[4,['학교','sw특기']]=['능남고등학교','c']

cols = list(df.columns)

df = df[[cols[-1]]+cols[0:-1]]

df.columns = ['result','number','name','graduate', 'height','grade','skill', 'total']

 

df['학교']=df['학교']+'등학교'

df['영어']=[85,35,75,60,20,100,65,85]

 

def add_cm(height):
    return str(height) + 'cm'

df['키'] = df['키'].apply(add_cm)

 

def capital(lang):
    if pd.notnull(lang):
        return lang.capitalize()
    return lang
df['sw특기']=df['sw특기'].apply(capital)

 

df['sw특기'].str.capitalize()

 

df.groupby('학교')

df.groupby('학교').get_group('북산고')

df.groupby('학교').get_group('능남고')

df.groupby('학교').mean()

df.groupby('학교').size()

df.groupby('학교').size()['능남고']

df.groupby('학교')['키'].mean()

df.groupby('학교')[['키', '국어']].mean()

df['학년']=[3,3,2,1,1,3,2,2] 

df.groupby(['학교','학년']).mean()

df.groupby('학년').mean()

df.groupby('학년').mean().sort_values('키',ascending=False)

df.groupby('학교')['sw특기'].count()

 

school = df.groupby('학교')
school['학년'].value_counts()

 

school['학년'].value_counts().loc['북산고']

school['학년'].value_counts(normalize=True).loc['북산고']

728x90
LIST