names_sr = pd.Series(names, index = index , name = '이름')
ages_sr = pd.Series(ages, index = index , name = '나이')
display(names_sr)
display(ages_sr)
df1 = pd.DataFrame(names_sr)
df1
df1['나이'] = ages_sr
df1
jobs = [fake.job() for _ in range(10)]
jobs
df_dict = {'이름' : names_sr , '나이' : ages_sr,'직업' : jobs }
df_dict
df2 = pd.DataFrame(df_dict)
df2
df1['직업'] = jobs
df1 == df2
df2['나이']['A']
df2.loc['A']
df2.iloc[3]
df2.loc['A':'F','나이']
df2.iloc[1:4,2]
df2[['직업','이름']]
df2.index
df2.columns
df2.values
df2.dtypes
df2.shape
df2.size
df2_T = df2.T
df2_T
df2.loc['I','나이'] = np.NaN
df2['이름']['B'] = '김재호'
df2.loc['J','이름'] = None
df2
df2.describe(include = 'all')
fillna_df = df2.fillna({'이름':'홍길동' , '나이':df2['나이'].mean().astype(int)})
df2.dropna(subset = ['이름','나이'])
설문조사 데이터를 이용하여 데이터 분석
import pandas as pd
import numpy as np
file_path = './data/survey_results_public.csv'
raw_data = pd.read_csv(file_path)
raw_data
raw_data.info()
columns = ["ResponseId","MainBranch","Age","Employment","RemoteWork","EdLevel","YearsCodePro","DevType","Country","Currency","CompTotal","LanguageHaveWorkedWith","LanguageWantToWorkWith","WorkExp","Industry"]
filtered_raw = raw_data[columns]
filtered_raw
filtered_raw.head()
def get_flattened_list(nested_series):
split_lists = nested_series.dropna().str.split(';')
return [val for sublist in split_lists for val in sublist]
def get_unique_values(nested_series):
flattened_list = get_flattened_list(nested_series)
unique_values = set(flattened_list)
return list(unique_values)
df = filtered_raw.copy()
df.head()
df = df.drop(index=0).reset_index(drop=True)
df.head()
df.info()
df.dropna().info()
pd.set_option('display.float_format','{:,.2f}'.format)
df.describe()
df.describe(include = object).T
df['MainBranch'].value_counts()
PRO_DEV = 'I am a developer by profession'
SEMI_DEV = 'I am not primarily a developer, but I write code sometimes as part of my work/studies'
EX_DEV = 'I used to be a developer by profession, but no longer am'
targetBranch = [PRO_DEV,SEMI_DEV,EX_DEV]
devs_df = df[df['MainBranch'].isin(targetBranch)]
devs_df['MainBranch'].value_counts()
devs_df.info()
display(df['Age'].value_counts(normalize = True))
display(devs_df['Age'].value_counts(normalize = True))
devs_df['Employment'].value_counts()
devs_df['Employment'].describe()
split_employment_lists = devs_df['Employment'].dropna().str.split(';')
flattern_employment_list = [val for sublist in split_employment_lists for val in sublist]
flattern_employment_list
unique_values = set(flattern_employment_list)
unique_values
flattern_employment_list = get_flattened_list(devs_df['Employment'])
flattern_employment_list
unique_values = get_unique_values(devs_df['Employment'])
unique_values
pd.Series(flattern_employment_list).value_counts()
devs_df = devs_df.dropna(subset=['Employment'])
devs_df.info()
employment_condition1 = devs_df['Employment'].str.contains('Employed, full-time')
employment_condition2 = devs_df['Employment'].str.contains('Independent contractor, freelancer, or self-employed')
employment_condition3 = devs_df['Employment'].str.contains('Employed, part-time')
devs_df = devs_df[employment_condition1 | employment_condition2 | employment_condition3]
devs_df.info()
devs_df['RemoteWork'].value_counts(normalize = True , dropna = False)
devs_df = devs_df.dropna(subset = 'RemoteWork')
devs_df.info()
devs_df['EdLevel'].value_counts(dropna = False)
devs_df['YearsCodePro'].unique()
devs_df['YearsCodePro'] = devs_df['YearsCodePro'].replace({'Less than 1 year':'0.5', 'More than 50 years':'51'})
devs_df['YearsCodePro'] = pd.to_numeric(devs_df['YearsCodePro']).astype('float')
devs_df['YearsCodePro'].unique()
devs_df.info()
devs_df['DevType'].isna().value_counts()
devs_df.dropna(subset = 'DevType', inplace = True)
devs_df.info()