제로베이스 강의에서 파이썬 수업을 시작했다.
파이썬 개념에 대해서는 이미 다른 강의들을 통해 배워왔고 또 익혀왔으나,
본 과정에서는 실습 위주의 수업이 진행되는 듯 하기에
이 글에서 기초 개념과 문법을 함께 정리하며 다시금 기본기를 다지도록 하겠다.
어떤 변수에 할당된 자료들은 반드시 고유의 형식을 가져야 한다. 이를 자료형(data type)이라고 부른다.
정수(int) : 소수점이 없는 양수/음수 및 0을 포함하는 숫자들을 표현하는 형식
실수 또는 부동소수점(float) : 소수점이 있는 숫자를 표현하는 형식. 정수도 float 형식으로 표현할 수 있지만(예컨대 3.0, -10.0 과 같은 방식), 그럴 경우 메모리를 더 많이 차지하게 된다.
문자열(str) : 낱글자, 단어, 띄어쓰기, 기호 등으로 구성된 문자들의 배열을 표현하는 형식. 작은 따옴표(‘)나 큰 따옴표(“)로 둘러싸인 값은 기본적으로 문자열 형식을 취하게 된다.
값 없음(None) : 값이 존재하지 않는 변수를 생성하려면 ‘값 없음’을 의미하는 어떤 데이터를 변수에 할당해 줘야 하는데, 파이썬에서는 이를 ‘None’으로 정해두었다.
불리언(bool) : 어떤 논리 혹은 조건의 참/거짓 판단을 표현하는 형식. ‘True’ 또는 ‘False’라는 두 값 중 하나를 취할 수 있다.
Q3. 데이터의 행과 열의 갯수를 파악하시오.
print(df.shape)
Q4. 전체 컬럼을 출력하라
df.columns
데이터프레임의 행이나 컬럼에 label이나 boolean array로 접근.
location의 약어로, 인간이 읽을 수 있는 label 값으로 데이터에 접근하는 것이다.
데이터프레임의 행이나 컬럼에 인덱스 값으로 접근.
integer location의 약어로, 컴퓨터가 읽을 수 있는 indexing 값으로 데이터에 접근하는 것이다.
dtype
Q6. 6번째 컬럼의 데이터 타입을 확인하라
df.iloc[:,5].dtype
Q8. 6번째 컬럼의 3번째 값은 무엇인가?
df.iloc[2,5]
exclude
Q11. 수치형 변수를 가진 컬럼을 출력하라
df.select_dtypes(exclude=object).columns #문자형을 제외한 int, float를 출력하기 위해 exclude
Q13. 각 컬럼의 결측치 숫자를 파악하라
df.isnull().sum()
Q14. 각 컬럼의 데이터수, 데이터타입을 한번에 확인하라
df.info()
Q15. 각 수치형 변수의 분포(사분위, 평균, 표준편차, 최대 , 최소)를 확인하라
df.describe()
Q17. 평균 속도 컬럼의 4분위 범위(IQR) 값을 구하여라
df['평균 속도'].quantile(0.75) - df['평균 속도'].quantile(0.25)
Q18. 읍면동명 컬럼의 유일값 갯수를 출력하라
df['읍면동명'].nunique() #41
Q19. 읍면동명 컬럼의 유일값을 모두 출력하라
df['읍면동명'].unique()
reset_index(drop=True)
Q22. quantity컬럼 값이 3인 데이터를 추출하여 index를 0부터 정렬하고 첫 5행을 출력하라
df.loc[df['quantity']==3].head().reset_index(drop=True)
df['item_price'].str[1:].astype('float')
Q24. item_price 컬럼의 달러표시 문자를 제거하고 float 타입으로 저장하여 new_price 컬럼에 저장하라
# 문자열이 하나라도 있으면 문자열로 인식하기 때문에 astype df['new_price'] = df['item_price'].str[1:].astype('float') Ans = df['new_price'].head() Ans
Q25. new_price 컬럼이 5이하의 값을 가지는 데이터프레임을 추출하고, 전체 갯수를 구하여라
len(df[df['new_price'] <=5])
Q26. item_name명이 Chicken Salad Bowl 인 데이터 프레임을 추출하고 index 값을 초기화 하여라
df.loc[df.item_name =='Chicken Salad Bowl'].reset_index(drop=True)
Q28. df의 new_price 컬럼 값에 따라 오름차순으로 정리하고 index를 초기화 하여라
Ans = df.sort_values('new_price').reset_index(drop=True)
Q29. df의 item_name 컬럼 값중 Chips 포함하는 경우의 데이터를 출력하라
Ans = df.loc[df.item_name.str.contains('Chips')]
Q30. df의 짝수번째 컬럼만을 포함하는 데이터프레임을 출력하라
Ans = df.iloc[:,::2]
Q31. df의 new_price 컬럼 값에 따라 내림차순으로 정리하고 index를 초기화 하여라
Ans = df.sort_values('new_price',ascending=False).reset_index(drop=True)
Q32. df의 item_name 컬럼 값이 Steak Salad 또는 Bowl 인 데이터를 인덱싱하라
Ans = df.loc[(df.item_name =='Steak Salad') | (df.item_name =='Bowl')]
Q33. df의 item_name 컬럼 값이 Steak Salad 또는 Bowl 인 데이터를 데이터 프레임화 한 후, item_name를 기준으로 중복행이 있으면 제거하되 첫번째 케이스만 남겨라
Ans = df.loc[(df.item_name =='Steak Salad') | (df.item_name =='Bowl')] Ans = Ans.drop_duplicates('item_name')
Q34. df의 item_name 컬럼 값이 Steak Salad 또는 Bowl 인 데이터를 데이터 프레임화 한 후, item_name를 기준으로 중복행이 있으면 제거하되 마지막 케이스만 남겨라
Ans = df.loc[(df.item_name =='Steak Salad') | (df.item_name =='Bowl')] Ans = Ans.drop_duplicates('item_name',keep='last')
Q36. df의 데이터 중 item_name의 값이 Izze 데이터를 Fizzy Lizzy로 수정하라
df.loc[df.item_name =='Izze','item_name'] = 'Fizzy Lizzy' Ans = df
Q38. df의 데이터 중 choice_description 값이 NaN 인 데이터를 NoData 값으로 대체하라(loc 이용)
df.loc[df.choice_description.isnull(),'choice_description'] ='NoData' Ans = df Ans.head()
Q39. df의 데이터 중 choice_description 값에 Black이 들어가는 경우를 인덱싱하라
# list(Ans['choice_description'])[1] Ans = df[df.choice_description.str.contains('Black')] Ans.head()
Q40. df의 데이터 중 choice_description 값에 Vegetables 들어가지 않는 경우의 갯수를 출력하라
Ans = len(df.loc[~df.choice_description.str.contains('Vegetables')])
Q41. df의 데이터 중 item_name 값이 N으로 시작하는 데이터를 모두 추출하라
Ans = df[df.item_name.str.startswith('N')]
Q42. df의 데이터 중 item_name 값의 단어갯수가 15개 이상인 데이터를 인덱싱하라
Ans = df[df.item_name.str.len() >=15]
Q43. df의 데이터 중 new_price값이 lst에 해당하는 경우의 데이터 프레임을 구하고 그 갯수를 출력하라 lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98]
lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98] Ans = df.loc[df.new_price.isin(lst)] display(Ans.head(3)) print(len(Ans))