3강 / 20강
표를 읽는 도구 — pandas 한 줄
24,419 × 7 짜리 표를 손에 쥐기
지난 강에서 본 파일은 사실 글자 줄의 나열이었습니다. 탭으로 칸이 나뉘어 있을 뿐이죠. 이대로는 "Ddx54 행의 KD 열" 같은 걸 꺼내기 어렵습니다.
그래서 pandas 를 씁니다. pandas 의 DataFrame 은
행에도 열에도 이름표가 붙은 표예요. 엑셀 시트를 파이썬에서 다룬다고 생각하면 됩니다.
df = pd.read_csv(cache, sep="\t", index_col=0)
│ └ 0번 열(유전자 이름)을 행 이름표로 쓴다
└ 칸 구분자는 쉼표가 아니라 탭
이 두 개의 인자가 전부입니다. sep="\t" 를 빠뜨리면
pandas 는 쉼표를 찾다가 줄 하나를 통째로 한 칸으로 읽어 버립니다.
index_col=0 을 빠뜨리면 유전자 이름이 이름표가 아니라 데이터가 됩니다.
표 한 장이 손에 들어왔습니다. shape 은 (행, 열) 순서입니다.
Python
브라우저에서 실행
🎮 count matrix 해부하기
행 · 열 · 칸을 눌러 보세요. 각각이 생물학적으로 무엇을 뜻하는지, 그리고 pandas 로는 어떻게 꺼내는지 함께 나옵니다.
표에서 값을 꺼내는 세 가지 길
pandas 를 처음 배울 때 가장 헷갈리는 부분입니다. 세 가지만 확실히 해 둡시다.
열 하나
df["WT_DDX54_1"]
대괄호에 열 이름 — 유전자 24,419개의 값
행 하나
df.loc["Ddx54"]
.loc 에 행 이름 — 샘플 7개의 값칸 하나
df.loc["Ddx54", "KD_DDX54_1"]
행 이름, 열 이름 — 숫자 하나
Ddx54 원시 개수: WT 는 1,200~1,500 · KD 는 700 대. 벌써 차이가 보입니다.
Python
브라우저에서 실행
🤔 확인 문제
pd.read_csv(..., sep="\t") 에서 sep 를 빠뜨리면?해설
read_csv 의 기본 구분자는 쉼표입니다. 탭으로 나뉜 파일에서 쉼표를 찾으면 나눌 곳을 못 찾아, 결국 열이 하나뿐인 이상한 표가 만들어집니다.🤔 확인 문제
index_col=0 은 무슨 일을 하나요?해설 0번 열에는 유전자 이름이 들어 있습니다. 이것을 행 이름표(index)로 삼아야
df.loc["Ddx54"] 처럼 이름으로 찾을 수 있습니다.🤔 확인 문제
df.shape 가 (24419, 7) 이라면?해설
shape 은 (행, 열) 순서입니다. 우리 표는 행이 유전자 · 열이 샘플이므로 유전자 24,419개, 샘플 7개입니다.