[3.17.TIL] 만만치 않은 파이썬과 판다스

Brave_ Oh·2025년 3월 17일
2

데이터_정규캠프

목록 보기
18/25

빠르게 판다스를 잡는 하루

새로운 한 주가 밝았으니, 이번주는 또 새로운 마음으로 시작해야 한다. 이번주의 목표는 판다스 필기를 빠르게 따라잡고, 그걸 바탕으로 데이터 시각화 강의를 마스터하는 것이다. 따라서 지난주, 오늘 세션에서 배운 판다스의 내용을 복습한 뒤, 그 내용으로 판다스 개인 과제를 푸는 것까지가 이번주의 가장 큰 과제가 아닐까 싶다.

판다스로 이제 무엇을 할 수 있는가?

이제 나는 판다스로 무엇을 할 수 있을까? 우선 판다스와 님피 라이브러리를 불러와 해당 라이브러리의 함수를 사용할 수 있다. 내 드라이브에 위치한 파일과 구글 드라이브를 마운팅해서 가져와 사용할 수도 있다.

또한 내가 가져온 테이블, 데이터프레임을 '볼 수 있다'. 이것은 단순히 데이터프레임을 가져와 꺼내는 것을 넘어, 해당 데이터프레임이 어떤 성질을 갖고 있는지, 갖고 있는 내용은 무엇인지를 구체적으로 볼 수 있음을 의미한다.

이후 세션에서 배운 내용을 통해 여러 데이터프레임을, SQL로 치면 병합할 수 있게 되었다. 수평결합인 MERGE, 수직결합인 JOIN, 그리고 이 둘을 모두 할 수 있는 CONCAT까지 배우면서, 이것을 사용해 여러 테이블에 산발적으로 흩어져있지만 연관성이 있는 수치들을 하나로 묶어, 의미있는 정보를 만들어낼 수 있다.

아직 내가 할 수 있는 건 여기까지이다. 이것들도 사실 내가 정리해놓은 함수표를 보고 뚱딱이는 정도이기 때문에, 내 수준이 아직 갈 길이 멀다는 것을 느낀다. 하지만 뭐 어떤가, SQL도 처음에 그랬는데. 결국 많이 해보고, 많이 익숙해져야만 할 수 있는게 아닐까?

어떻게든 풀긴 한다...

오늘 발재한 판다스 개인과제를 2문제 풀어보았다. 역시나 버벅이면서 풀긴 했지만, 그래도 두 문제의 답을 구했다는 것에서 조금 만족감을 느낀다.

필수 1. 데이터 불러오기

  • Python 라이브러리를 활용하여, 구글 드라이브의 CSV 파일을 DataFrame으로 읽어오는 코드를 작성해주세요.
  • 테이블의 행과 열 개수를 확인해주세요.
  • 테이블의 처음 5줄을 확인해주세요.
  • 결과 제출형태: Library import 부분을 포함한 정답코드
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from google.colab import drive
drive.mount('/content/drive')
df=pd.read_csv("/content/drive/MyDrive/Colab_Notebooks/flight_data_homework.csv”)
df.shape
df.iloc[[0,1,2,3,4],:]

먼저 판다, 님피 라이브러리 import를 비롯해 가져와야할 것들을 가져와야 한다. 문제를 푸는데 필요한 데이터프레임을 마운트해오기 위해 read_csv를 사용했다.

테이블의 행과 열 개수를 구하는 함수는, 이름 그대로 데이터프레임의 외관을 보여주는 shape이다. 처음 5줄을 확인하는 함수는, 내 기억으로는 shape처럼 보여주는 함수가 있었던 것 같은데, 일단은 내가 수동으로 가져올 컬럼과 인덱스의 수를 정할 수 있는 iloc 함수를 사용했다. 조금 무식한 방법이 아닌가 싶지만, 주어진 문제를 해결하기 위해서야 뭐...

필수 2. 결측치 처리

  • 각 컬럼별 결측치 개수를 구해주세요.
  • 결측치가 있는 행을 모두 제거해주세요.
  • 결과 제출형태: Library import 부분을 포함한 정답코드
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from google.colab import drive
drive.mount('/content/drive')
df.isnull().sum()
df=df.drop(['Route'], axis=1)
df=df.drop(['Total_Stops'], axis=1)

import 부분은 생략한다. 먼저 결측치를 확인하는 함수인 isnull().sum()를 사용했다. 결측치가 발생한 행은 Route와 total_stops이므로, 이 둘을 제거해주기 위해 drop을 사용했다. 개인적으로는 이 두 행을 한 줄로 제거할 수 있는 방법이 있으리라 믿는다. 다만 먼저 답을 내는 것에 집중하기 위해 두 코드를 따로 작성해줬지만, 다른 방법을 찾아봐야겠다.

그외엔...

코드카타와 동영상 강의는 TIL을 올린 뒤에 볼 예정이다. 우선은 세션 복습이 최우선이라고 생각해, 그거에 집중하기로 마음 먹었다.

하루가 아니라 시간 단위의 계획

오늘부터 노션 캘린더를 사용해 시간 단위의 계획을 세우기로 결심했다. 이제는 해야할 것이 너무 많아지면서, 시간을 단위별로 사용하지 않으면 지금 뭘 해야할지 헤매면서 낭비하는 시간이 너무 많기 때문이다.

이번주는 또 다른 한 주가 될 것이라 믿는다.

profile
데이터 분석 애송이의 유쾌한 반란

0개의 댓글

관련 채용 정보