방송대 오픈소스기반데이터분석 12강: 시계열 연계와 피어슨 상관분석
자전거 이용량이 어느 날 급감했다는 사실만으로는 원인을 알 수 없다. 날짜를 공통 키로 날씨 데이터를 정확히 연결하고, 시간 패턴과 선형 관계를 분리해 확인해야 한다. 이 글은 정형 데이터의 구조에서 출발해 시계열 정렬, merge() 검산, 피어슨 상관계수 해석까지 하나의 재현 가능한 분석 흐름으로 연결한다.
이용량 급감은 답이 아니라 새로운 질문이다
서울시 공공자전거 이용량을 날짜별로 그렸더니 특정 날에 급격한 하락이 보였다고 하자. 곧바로 “비 때문에 이용이 줄었다”고 결론 내리면 분석이 아니라 추측이다. 하락이 평일·주말 차이인지, 강수 때문인지, 수집 누락이나 서비스 장애 때문인지 현재 데이터만으로 구분할 수 없기 때문이다.
강의자료는 2023년 4월 1일부터 30일까지의 따릉이 일별 데이터를 이용해 시간대·요일·일자별 패턴을 파악하고, 강수량 같은 외부 요인과 이용량의 관계를 분석하는 프로젝트를 제시한다. 핵심은 데이터를 더 많이 모으는 데 있지 않다. 자전거 기록과 날씨 기록이 같은 날짜를 뜻하도록 정렬하고, 연결 뒤 생긴 누락을 확인하며, 상관관계의 범위를 넘지 않게 해석하는 데 있다.
문제 해결 핵심: 급변을 발견하면 원인을 선언하지 말고, 원인 후보를 측정할 연관 데이터를 찾은 뒤 시간 단위와 키를 맞춰 검증한다.
정형 데이터는 행과 열의 의미가 고정된 기록이다
정형 데이터는 행과 열로 구성된 명확한 구조를 가진다. 각 열은 날짜, 대여소, 이용시간, 이동거리처럼 하나의 속성을 뜻하고 각 행은 개별 대여 또는 날짜별 집계 같은 하나의 레코드를 뜻한다. 데이터베이스, 스프레드시트와 CSV 파일이 대표적인 형태다.
구조가 명확하다는 것은 분석이 자동으로 신뢰할 만하다는 뜻은 아니다. 한 행이 “대여 한 건”인지 “하루 합계”인지 모르면 집계 결과가 달라진다. 같은 이름의 거리 열도 미터와 킬로미터가 섞이면 비교할 수 없다. 정형 데이터의 분석 용이성은 열의 의미, 자료형, 단위와 행의 관측 단위를 정확히 해석할 때 확보된다.
| 구조 질문 | 확인 예시 | 틀렸을 때 생기는 문제 |
|---|---|---|
| 한 행은 무엇인가? | 대여 한 건인지 날짜별 합계인지 확인 | 이미 집계된 값을 다시 합산해 중복 계산한다. |
| 키는 무엇인가? | 대여 ID, 날짜, 대여소 ID의 고유성 확인 | 병합 시 행이 예상보다 늘어나거나 사라진다. |
| 열의 단위는 무엇인가? | 이용시간의 분·초, 거리의 m·km 확인 | 평균과 상관계수의 해석이 왜곡된다. |
| 자료형은 올바른가? | 날짜가 문자열인지 datetime인지 확인 | 시간 정렬과 날짜별 그룹화가 잘못된다. |
| 누락은 무엇을 뜻하는가? | 비가 오지 않음인지 관측 실패인지 구분 | 결측을 0으로 바꾸며 서로 다른 의미를 섞는다. |
공공데이터 사례에서는 분석 단위를 먼저 고정한다
강의자료의 따릉이 사례는 서울 열린데이터광장에서 제공하는 대여 기록을 사용한다. 대여·반납 일시와 대여소 정보, 이용시간, 이동거리 등을 포함한 기록을 날짜나 시간대 단위로 집계할 수 있다. 날씨와 연계하려면 기상 데이터도 같은 공간과 시간 범위를 나타내야 한다.
예를 들어 자전거 이용량이 일별 합계인데 강수량은 시간별 관측치라면 그대로 병합할 수 없다. 자전거 데이터를 시간별로 다시 집계하거나, 강수량을 일별 합계로 변환해 관측 단위를 맞춰야 한다. “둘 다 날짜 열이 있다”는 사실만으로 비교 가능성이 보장되지 않는다.
강의자료의 서비스 규모와 운영 현황은 2024년 기준 사례 설명이다. 분석 대상 기간은 2023년 4월이며, 이 기준 시점과 현재 운영 현황을 섞지 않는다.
시계열은 순서를 가진 값이라 행을 섞어서는 안 된다
시계열 데이터는 시간 순서에 따라 관측된 값의 연속이다. 각 관측값은 앞선 값과 시간적 의존관계를 가질 수 있고, 추세·주기성·급변 같은 패턴을 통해 현상이 시간에 따라 어떻게 변하는지 보여 준다.
| 패턴 | 뜻 | 따릉이 사례의 질문 | 확인 방법 |
|---|---|---|---|
| 추세 | 장기간에 걸친 증가·감소 방향 | 기간 전체에서 이용량이 지속적으로 변하는가? | 시간 순 선 그래프와 이동 요약 |
| 주기성 | 일정 간격으로 되풀이되는 변화 | 요일이나 시간대별 패턴이 반복되는가? | 요일·시간대 그룹별 집계 |
| 급변 | 인접 시점과 크게 다른 변화 | 특정 일자의 하락은 실제 사건인가? | 원자료·날씨·운영 기록 교차 확인 |
| 누락 구간 | 관측값이 없는 시간 범위 | 이용량 0인가, 데이터가 수집되지 않았는가? | 예상 날짜 범위와 실제 키 비교 |
요일별 패턴을 보려면 날짜에서 요일을 만들고 같은 요일끼리 집계한다. 일자별 변화를 보려면 날짜 순서를 유지한다. 행을 이용량 크기순으로 정렬한 뒤 선으로 연결하면 시간 흐름이 사라져 시계열 그래프가 아니다.
merge()의 성패는 공통 키와 행 보존에서 결정된다
Pandas의 merge()는 SQL의 join과 유사하게 공통 키를 기준으로 두 DataFrame의 열을 결합한다. 강의자료는 자전거 일별 이용량을 왼쪽에 두고 강수량을 left join으로 연결한다. 왼쪽 데이터의 날짜를 모두 보존하면서 일치하는 날씨 정보를 붙이려는 선택이다.
다음은 결합 결과를 눈으로 검산하기 위한 학습용 예제다. 두 데이터셋의 날짜 열 이름이 다르므로 left_on과 right_on을 각각 지정한다.
import pandas as pd
daily_usage_df = pd.DataFrame({
"기준_날짜": pd.to_datetime(["2023-04-01", "2023-04-02", "2023-04-03"]),
"이용건수": [1280, 1420, 960]
})
rain_df = pd.DataFrame({
"일시": pd.to_datetime(["2023-04-01", "2023-04-03"]),
"강수량": [0.0, 12.5]
})
merged_df = pd.merge(
daily_usage_df,
rain_df,
how="left",
left_on="기준_날짜",
right_on="일시"
)
print(merged_df)
결과에는 자전거 데이터의 세 날짜가 모두 남는다. 4월 2일에 대응하는 날씨 행이 없으므로 일시와 강수량은 결측값이 된다. 이것을 강수량 0으로 바로 바꾸면 “비가 오지 않았다”와 “날씨 기록을 찾지 못했다”를 같은 뜻으로 처리하게 된다.
병합 검산: 병합 전 왼쪽 행 수, 키 중복 수, 병합 후 행 수, 매칭 실패 수를 함께 확인한다. left join 뒤 행 수가 늘었다면 오른쪽 키의 중복으로 일대다 결합이 발생했는지 조사한다.
left·inner·outer join은 보존할 관측이 다르다
| 결합 방식 | 남기는 키 | 따릉이·날씨 분석에서의 의미 | 주의점 |
|---|---|---|---|
| left | 왼쪽의 모든 키 | 모든 자전거 이용 날짜를 유지하고 날씨를 붙인다. | 날씨가 없는 날짜는 결측으로 남는다. |
| inner | 양쪽에 공통인 키만 | 자전거와 날씨가 모두 존재하는 날짜만 분석한다. | 매칭 실패 날짜가 조용히 제외되어 표본이 달라진다. |
| outer | 양쪽의 모든 키 | 어느 쪽에만 날짜가 있는지 감사할 때 유용하다. | 분석 전에 누락 방향을 구분해 처리해야 한다. |
무조건 left join이 옳은 것은 아니다. 분석 질문이 “자전거 데이터의 모든 날짜를 유지하라”이면 left가 맞고, 키 품질을 진단하려면 outer가 더 많은 정보를 줄 수 있다. 결합 방식은 코드 습관이 아니라 어떤 관측을 보존할지에 대한 분석 결정이다.
피어슨 상관계수는 선형 동행의 방향과 강도를 요약한다
피어슨 상관계수는 두 연속형 변수 사이의 선형 관계를 -1에서 1 사이의 값으로 나타낸다. 1에 가까우면 한 변수가 증가할 때 다른 변수도 함께 증가하는 강한 양의 선형 관계, -1에 가까우면 반대 방향으로 움직이는 강한 음의 선형 관계, 0에 가까우면 선형 관계가 약함을 뜻한다.
표본 상관계수는 다음처럼 각 값이 평균에서 벗어난 방향을 함께 비교하고, 두 변수의 전체 변동 크기로 나누어 계산할 수 있다.
r = Σ[(xᵢ - x̄)(yᵢ - ȳ)] / √(Σ(xᵢ - x̄)² × Σ(yᵢ - ȳ)²)
학습을 위해 강수량 [0, 0, 5, 10, 20]과 이용건수 [140, 135, 120, 105, 80]을 가정하자. 강수량이 평균보다 큰 날에는 이용건수가 평균보다 작은 경향이 있어 편차의 곱이 주로 음수가 된다. Pandas로 계산하면 약 -0.994로, 이 다섯 관측에서는 매우 강한 음의 선형 관계가 나타난다.
sample = pd.DataFrame({
"강수량": [0, 0, 5, 10, 20],
"이용건수": [140, 135, 120, 105, 80]
})
r = sample["강수량"].corr(sample["이용건수"])
print(round(r, 3)) # -0.994
corr()의 결과는 결합된 행 쌍을 기준으로 계산한다. 결측치 처리로 사용 날짜가 달라지면 상관계수도 달라질 수 있으므로, 계산에 실제 사용된 관측 수와 기간을 함께 확인해야 한다.
강한 상관도 원인·예측력·안정성을 보증하지 않는다
상관계수가 -1에 가깝다는 사실만으로 비가 자전거 이용 감소의 유일한 원인이라고 결론 내릴 수 없다. 주말 여부, 기온, 행사, 서비스 장애처럼 두 변수와 동시에 관련된 요인이 있을 수 있다. 또한 피어슨 계수는 선형 관계를 측정하므로 U자형처럼 강하지만 비선형인 관계는 0에 가깝게 나올 수 있다.
| 잘못된 결론 | 왜 틀리는가 | 교정 질문 |
|---|---|---|
| r이 크면 한 변수가 원인이다. | 상관은 방향과 동행을 보일 뿐 인과를 입증하지 않는다. | 시간 순서와 제3의 변수를 확인했는가? |
| r이 0이면 아무 관계도 없다. | 비선형 관계는 피어슨 r에 약하게 나타날 수 있다. | 산점도에서 곡선이나 집단 패턴이 보이는가? |
| 극단값 하나도 문제없다. | 이상치가 기울기와 r을 크게 바꿀 수 있다. | 원자료의 이상점을 확인하고 전후 값을 비교했는가? |
| 전체 r이 집단별 관계를 대표한다. | 요일·지역 등 집단을 섞으면 관계가 달라질 수 있다. | 집단별 산점도와 상관계수를 비교했는가? |
| 한 달의 r은 다른 계절에도 같다. | 짧은 기간의 패턴은 계절과 운영 조건에 의존한다. | 분석 기간과 일반화 범위를 명시했는가? |
실습 프로젝트는 세 개의 검증 관문으로 재구성할 수 있다
- 관측 단위 관문: CSV를 읽고 기초 통계량, 결측·이상치, 날짜 자료형을 확인한다. 삭제하기 전에 급변이 오류인지 실제 사건인지 조사한다.
- 시간 패턴 관문: 일자·요일·시간대별 이용량을 각각 집계해 추세와 주기성을 분리한다. 시간 순서를 보존해 시각화한다.
- 연계 해석 관문: 날짜 단위를 맞춘 강수량을 병합하고 매칭 실패를 검산한다. 산점도와 피어슨 r을 함께 보고, 상관을 원인으로 확대하지 않는다.
이 흐름은 자전거 데이터에만 한정되지 않는다. 매출과 광고, 전력 사용량과 기온처럼 시간축을 공유하는 정형 데이터를 연계할 때도 관측 단위 → 키 품질 → 시계열 패턴 → 관계 측정 → 해석 한계의 순서를 적용할 수 있다.
핵심 개념 정리
- 정형 데이터의 분석 가능성은 표 모양 자체보다 행의 관측 단위, 열 의미, 키와 자료형이 명확한 데서 나온다.
- 시계열은 시간 순서와 간격이 의미를 가지므로 크기순 정렬이나 누락 구간 무시는 패턴을 왜곡한다.
merge()는 공통 키로 정보를 결합하며 left·inner·outer는 보존하는 관측이 다르다.- 피어슨 상관계수는 두 연속형 변수의 선형 관계 방향과 강도를 -1에서 1 사이로 요약한다.
- 강한 상관은 인과관계가 아니며 기간, 결측, 이상치, 비선형성과 집단 차이를 함께 검토해야 한다.
시간 기반 정형 데이터를 분석할 때는 한 행의 의미와 기간을 고정하고 → 날짜 자료형·단위·누락을 정리하고 → 시간 순으로 패턴을 확인하고 → 보존할 관측에 맞는 join을 선택하고 → 병합 행 수와 매칭 실패를 검산하고 → 산점도와 상관계수를 함께 해석한 뒤 → 원인 주장의 범위를 제한한다. 이 순서가 데이터 연결을 근거 있는 분석으로 바꾼다.
예상문제 10선
1. 정형 데이터의 핵심 특성으로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 시간 순서는 시계열의 특성이며 정형 데이터에는 범주·날짜 등 여러 자료형이 올 수 있다.
- ② 오답: 고정 구조가 약한 이미지·음성은 일반적으로 비정형 데이터에 가깝다.
- ③ 오답: 정형 데이터에도 결측·중복·단위 불일치가 존재해 품질 검증이 필요하다.
- ④ 정답: 각 행과 열의 역할이 정의된 테이블 구조가 정형 데이터의 핵심이다.
2. 날짜별 이용량과 시간별 강수량을 연계하기 전에 가장 먼저 할 일은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 행 수가 아니라 같은 관측 단위와 키가 대응해야 하며 임의 행은 거짓 관측을 만든다.
- ② 정답: 일별과 시간별이라는 관측 단위를 먼저 통일해야 날짜별 관계를 비교할 수 있다.
- ③ 오답: 강수량은 계산할 수치형을 유지하고 날짜 키를 시간 자료형으로 정리해야 한다.
- ④ 오답: 시간 순서 제거는 시계열 의존성과 추세를 파괴한다.
3. 강의의 연계 분석 흐름으로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 데이터 품질과 시간 패턴을 먼저 이해한 뒤 연계 관계를 측정하는 흐름이다.
- ② 오답: 상관계수는 정렬·병합과 결측 검토가 끝난 관측 쌍에서 계산해야 한다.
- ③ 오답: 분석 전에 원인을 확정하면 탐색 결과를 그 결론에 맞추는 오류가 생긴다.
- ④ 오답: 관측 단위와 기간은 결합과 해석의 핵심 조건이므로 제거할 수 없다.
4. 본문의 left join 예제에서 병합 후 남는 자전거 날짜 수와 날씨가 매칭되지 않은 날짜 수는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 공통 날짜만 남기는 inner join으로 잘못 해석했고 날씨 누락도 놓쳤다.
- ② 오답: 미매칭 수는 맞지만 left join은 왼쪽의 세 날짜를 모두 보존한다.
- ③ 정답: 4월 1·2·3일이 남고 날씨에 없는 4월 2일 한 건이 결측으로 표시된다.
- ④ 오답: 날씨에는 4월 1일과 3일이 있어 미매칭은 4월 2일 하나뿐이다.
5. left join과 inner join의 차이를 바르게 설명한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 분석 표본을 결정하는 두 결합 방식의 보존 규칙을 정확히 설명한다.
- ② 오답: left의 기준 방향과 outer에 가까운 설명을 뒤섞었다.
- ③ 오답: join은 키를 맞추며 중복 제거와 결측 대체를 자동 수행하지 않는다.
- ④ 오답:
left_on·right_on으로 다른 열 이름을 지정할 수 있고 inner도 키가 필요하다.
6. 피어슨 상관계수 r이 -1에 가까울 때의 해석은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 강한 양의 관계는 r이 1에 가까울 때 나타난다.
- ② 오답: r은 표준화된 동행 방향을 나타내며 두 변수의 평균·산포가 같은지 말하지 않는다.
- ③ 오답: -1에 가까운 값은 선형 관계가 매우 강하다는 뜻이다.
- ④ 정답: 두 변수의 편차가 주로 반대 부호를 가져 반대 방향의 선형 동행을 보인다.
7. “강수량과 이용량의 r이 -0.9이므로 비가 이용 감소의 유일한 원인이다”라는 결론의 문제는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 피어슨 r의 유효 범위는 -1부터 1이며 -0.9는 범위 안이다.
- ② 오답: 음수 부호는 한 변수가 커질 때 다른 변수가 작아지는 방향을 뜻한다.
- ③ 정답: 상관은 인과의 충분조건이 아니므로 시간 순서와 제3의 요인을 추가로 검토해야 한다.
- ④ 오답: 피어슨 상관계수는 두 연속형 변수의 선형 관계를 측정한다.
8. 본문의 학습용 표본에서 Pandas로 계산한 강수량과 이용건수의 r을 소수 셋째 자리까지 반올림한 값은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 강수량이 늘수록 이용량이 뚜렷하게 감소해 선형 관계가 약하지 않다.
- ② 정답: 계산값 -0.994332...을 소수 셋째 자리까지 반올림한 결과다.
- ③ 오답: 절댓값은 비슷하지만 강수량과 이용량이 반대 방향이므로 부호가 음수다.
- ④ 오답: 피어슨 r은 -1에서 1 사이이므로 -1.500은 나올 수 없다.
9. left join 뒤 행 수가 왼쪽 데이터보다 크게 늘었다. 가장 먼저 확인할 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 수치 평균은 병합 행 증가의 구조적 원인을 설명하지 않는다.
- ② 오답: 상관계수는 병합이 올바른지 검산한 뒤 계산할 결과다.
- ③ 오답: 정렬은 행의 표시 순서를 바꿀 뿐 일대다 매칭으로 생긴 중복을 해결하지 않는다.
- ④ 정답: 오른쪽 키 중복은 같은 왼쪽 키를 여러 번 복제해 병합 행 수를 늘릴 수 있다.
10. 특정 날 자전거 이용량 급감의 원인을 분석하는 절차로 가장 타당한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 급감은 오류가 아니라 실제 사건일 수 있고 평균만으로 원인을 찾을 수 없다.
- ② 정답: 급변 검증, 키 정렬, 병합 품질, 통계 관계와 인과 한계를 차례로 확인한다.
- ③ 오답: 행 순서 결합은 날짜가 어긋날 수 있고 결측 0 대체와 인과 확정도 근거가 없다.
- ④ 오답: 시간 순서를 없애면 시계열 맥락과 외부 요인 연결을 분석할 수 없다.
참고 자료와 작성 기준
이 글은 해당 차시 강의자료를 바탕으로 학습 목적에 맞게 재구성한 비공식 학습자료입니다. 데이터 연계 예제, 상관계수 계산과 문제 해설은 학습자의 이해를 돕도록 구성하고 검토했습니다.
- 작성·편집: 올에이클래스 학습연구팀
- 주요 근거: 한국방송통신대학교 컴퓨터과학과, 「오픈소스 기반 데이터분석」 12강 ‘정형 데이터 분석’ 강의자료(PDF 생성 정보: 2025년, 사례 운영 현황 기준: 2024년)
- 편집 원칙: 올에이클래스 편집 정책
- 최종 내용 검토: 2026-08-30
댓글
댓글 쓰기