[CH1~5]Python 기초 개념 & 문법 정리

박다은·2024년 2월 18일

Python 문법

목록 보기
2/2

제로베이스 강의에서 파이썬 수업을 시작했다.
파이썬 개념에 대해서는 이미 다른 강의들을 통해 배워왔고 또 익혀왔으나,
본 과정에서는 실습 위주의 수업이 진행되는 듯 하기에
이 글에서 기초 개념과 문법을 함께 정리하며 다시금 기본기를 다지도록 하겠다.

기초 개념 정리

자료의 타입

어떤 변수에 할당된 자료들은 반드시 고유의 형식을 가져야 한다. 이를 자료형(data type)이라고 부른다.

  • 정수(int) : 소수점이 없는 양수/음수 및 0을 포함하는 숫자들을 표현하는 형식

  • 실수 또는 부동소수점(float) : 소수점이 있는 숫자를 표현하는 형식. 정수도 float 형식으로 표현할 수 있지만(예컨대 3.0, -10.0 과 같은 방식), 그럴 경우 메모리를 더 많이 차지하게 된다.

  • 문자열(str) : 낱글자, 단어, 띄어쓰기, 기호 등으로 구성된 문자들의 배열을 표현하는 형식. 작은 따옴표(‘)나 큰 따옴표(“)로 둘러싸인 값은 기본적으로 문자열 형식을 취하게 된다.

  • 값 없음(None) : 값이 존재하지 않는 변수를 생성하려면 ‘값 없음’을 의미하는 어떤 데이터를 변수에 할당해 줘야 하는데, 파이썬에서는 이를 ‘None’으로 정해두었다.

  • 불리언(bool) : 어떤 논리 혹은 조건의 참/거짓 판단을 표현하는 형식. ‘True’ 또는 ‘False’라는 두 값 중 하나를 취할 수 있다.

기초 문법 정리

01. Getting & Knowing Data

Q3. 데이터의 행과 열의 갯수를 파악하시오.

print(df.shape)

Q4. 전체 컬럼을 출력하라

df.columns

Python Pandas 파이썬 판다스 loc과 iloc의 차이

✔ loc

  1. 데이터프레임의 행이나 컬럼에 label이나 boolean array로 접근.

  2. location의 약어로, 인간이 읽을 수 있는 label 값으로 데이터에 접근하는 것이다.

✔ iloc

  1. 데이터프레임의 행이나 컬럼에 인덱스 값으로 접근.

  2. 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()

>02 Filtering & Sorting

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))
profile
DA 취뽀 도전기!

0개의 댓글