1. Data Frame 다루기
1-1 Data Frame 만들기
문제열(Column)의 이름이 A, B, C, D이고, 각 열마다 Random한 숫자가 10개씩 담겨져 있는 Data Frame을 생성해보세요.
검색 힌트 : pandas Data Frame 생성, pandas data frame 만들기
- 난수 생성법
import pandas as pd #pandas import from random import* #모듈 선언 #num = uniform(-2,2) #-2~ 2 사이의 난수 randlist = [uniform(-2,2)] for i in range(39): randlist.append(uniform(-2,2)) rand_df = pd.DataFrame({'A':randlist[0:10], 'B':randlist[10:20], 'C':randlist[20:30], 'D':randlist[30:40]}) rand_df
#모듈 선언 from random import* #0 ~ 1 사이의 소수 a = random() #1~ 100 사이의 소수 b = uniform(1,100) #1~100 사이의 정수 c = randint(1,100) #1~100 사이의 정수, step = 2 d = randrange(2,101,2)
1-2 Data Frame Indexing 1
문제1-1에서 생성한 DataFrame에서 위에서부터 5개의 행을 출력하는 코드를 작성해보세요
검색 힌트 : pandas indexing, pandas print top5 rows
rand_df[0:5]
rand_df.loc['0':'4'] #loc 메서드를 활용하는 방법
1-3 Data Frame Indexing 2
문제1-1에서 생성한 DataFrame에서 1번째, 2번째 열만 추출하는 코드를 작성해보세요
검색 힌트 : pandas indexing, pandas iloc, pandas loc
rand_df[['A','B']]
rand_df.iloc[:,0:2]#, 앞에 0:10 도 됨
1-4 Data Frame Indexing 3
문제1-1에서 생성한 DataFrame에서 "A"열과 "D"열만 추출하는 코드를 작성해보세요
검색 힌트 : pandas indexing, pandas iloc, pandas loc
rand_df[['A','D']]
rand_df.loc[:,['A','D']]
1-5 Data Frame columns, values, index
문제1-1에서 생성한 DataFrame의 Column들과 값들, index, shape을 출력하는 코드를 작성하세요
검색 힌트 : pandas columns, pandas values, pandas index
rand_df.columns
rand_df.values
rand_df.index
1-6 Data Frame Informations
문제1-1에서 생성한 DataFrame의 column별 정보와 통계적 정보를 출력하는 코드를 작성하세요
검색 힌트 : pandas get data frame information, pandas get statistic information
rand_df.info()
1-7 Data Frame Sorting
문제1-1에서 생성한 DataFrame을 "A" Column을 기준으로 내림차순으로 정렬한 뒤, Index를 재정렬하는 코드를 작성하세요.(단, Index 재정렬 후 , 원래의 index는 삭제해주세요.)
검색 힌트 : pandas sort values, pandas sort values descending, pandas reset index
#우선 "A" Column의 값을 내림차순으로 정렬
rand_df.sort_values(by = 'A',ascending = False)
rand_df.sort_values(by = 'A',ascending = False).reset_index(drop = True, inplace = False)
1-8 Data Frame Advanced Indexing 1
문제 아래와 같은 Data Frame을 만들고, 주 언어가 파이썬인 사람들만 조회하는 코드를 작성해보세요.
검색 힌트 : pandas indexing, pandas query, pandas get specific values
import pandas as pd
#dataframe생성에 필요한 list들 생성
name = ['피카츄','라이츄','파이리',"꼬부기","버터풀","야도란","피죤투","또가스"]
department = ['경제','경영','컴공','컴공','경제','전전','컴공','기계']
lang = ['파이썬','C','C++','파이썬','자바','엄','파이썬','자바']
work = ['AI엔지니어','프론트','백엔드','AI엔지니어','백엔드','프론트','AI엔지니어','PM']
#dataframe 생성
df_py = pd.DataFrame({'이름': name,'학과': department,'언어' : lang, '직무' : work})
#1번째 방법 = iloc 사용하기
#iloc 뒤에 [ ]임을 주의
df_py.iloc[[0,3,6],:]
#2번째 방법 = 리스트 만들기
**py_user = df_py[df_py["언어"] == "파이썬"]
py_user**
#3번째 방법 = isin 메서드 활용하기
py_user2 = df_py[df_py["언어"].isin(["파이썬"])]
py_user2
#4번째 방법 = query 메서드 활용
df_py.query('언어 == 파이썬')
1-9 Data Frame Advanced Indexing 2
문제1-8에서 만든 Data Frame에서 학과가 컴공이고, 주 언어가 파이썬, 직무는 AI 엔지니어인 사람들만 조회하는 코드를 작성해보세요.
검색 힌트 : pandas indexing, pandas query, pandas get specific values
py_sp1 = df_py[(df_py['학과'] == '컴공') & (df_py['언어'] == '파이썬') & (df_py['직무'] =='AI엔지니어')]
py_sp1
1-10 Data Frame Concat
문제1-1에서 만든 Data Frame과 1-8에서 만든 Data Frame을 위아래로 합치는 코드와, 좌우로 합치는 코드를 작성해주세요. 각 작업을 수행한 후엔 Index를 다시 세팅해주세요!
검색 힌트 : pandas concat Data Frame
#위아래로 합치는 코드(인덱스 재정렬까지)
df_concat = pd.concat([rand_df,df_py])
df_concat.reset_index(drop = True, inplace = False)
#좌우로 합치는 코드
df_concatud = pd.concat([rand_df,df_py], axis = 1)
df_concatud
- 위아래로 합친경우
- 좌우로 합친 경우
1-11 Data Frame Concat 2
문제1-10에서 만든 Data Frame가 뭔가 이상합니다. NaN값들이 막 섞여있고 상당히 지저분합니다. 왜 이러는 걸까요? 이유를 한번 생각해서 적어보세요!
이유를 적어본 뒤에, 1-8에서 만든 Data Frame의 이름을 "A", "B", "C", "D"로 바꾼 다음 다시 시도해보세요.
검색 힌트 : pandas concat Data Frame, pandas column name change
#1번 : 행과 열의 개수가 맞지 않아서 NaN 값이 생긴다
#2번 :
df_nc = pd.DataFrame({'A': name,'B': department,'C' : lang, 'D' : work})
df_connew = pd.concat([rand_df,df_nc])
df_connew.reset_index(drop = True, inplace = False)
#마지막 줄은 index 초기화를 위해 필요한 코드
2. 데이터 불러오기
2-1 Read CSV
문제방금 다운받은 데이터를 Data Frame으로 읽는 코드를 작성해주세요.
검색 힌트 : pandas read data, pandas read csv file
penguin = pd.read_csv("penguins_lter.csv")
penguin
2-2 Data Frame Indexing 복습!
문제읽어온 Data Frame에서, species
가 Gentoo
인 데이터만 조회하고, index를 새로 재배치 하는 코드를 작성해주세요.
검색 힌트 : pandas indexing, pandas query
species = penguin[penguin['species'].isin(['Gentoo'])]
species
2-3 Groupby
문제2-1에서 읽어온 Data Frame에서, species
별 평균값 데이터를 조회해보세요.species
별 평균값의 조회가 끝났다면, island
별 평균, 최대, 최소, 중앙값 데이터도 조회해보세요!
검색 힌트 : pandas groupby, pandas aggregate function
#1번
penguin.groupby('species').mean()
#2번
penguin.groupby('island').agg(['mean','min','max','median'])
2-4 apply lambda
문제들어온 input에 대해서 제곱된 값을 return 해주는 함수를 작성하세요.그런 다음 2-1에서 읽어온 Data Frame에서, body_mass_g
Column의 값을 제곱한 새로운 Column을 만들어보세요
검색 힌트 : pandas new column, pandas apply lambda
def square(num):
return num*num
penguin['body_mass_g_s'] = square(penguin['body_mass_g'])
penguin
2-5 drop nan values
문제2-1에서 읽어온 Data Frame에서 칼럼 별로 값이 없는 데이터의 수를 구하는 코드를 작성해보세요.그리고 그런 공백값들을 제거한 Data Frame을 출력하는 코드를 작성해주세요.
검색 힌트 : pandas get number of nan, pandas remove null
#1번
penguin.isna().sum()
#2번
penguin.dropna()
2-6 remove column
문제2-1에서 읽어온 Data Frame에서 island
Column을 제거하는 코드를 작성해주세요.
검색 힌트: pandas remove columns
penguin.drop('island',axis = 1)
'인공지능 > 인공지능 기초 개념' 카테고리의 다른 글
(5) ML 기초 (0) | 2024.03.15 |
---|---|
(2)-2 데이터 시각화 실습 (0) | 2024.03.15 |
(3)-2 EDA 실습 (1) | 2024.03.15 |
(4) EDA 필사 (0) | 2024.03.15 |
(3)EDA (0) | 2024.03.15 |