판다스의 주요기능을 sql과 비교하시오 to chatgpt
판다스(Pandas)와 SQL은 데이터 조작과 분석에 강력한 도구지만, 사용 방식과 최적화된 환경이 다릅니다. 주요 기능을 SQL과 비교하여 설명하면 다음과 같습니다.
1. 데이터 조회 (SELECT)
Pandas
df[['column1', 'column2']] # 특정 컬럼 선택
df[df['column1'] > 10] # 조건 필터링
SQL
SELECT column1, column2 FROM table;
SELECT * FROM table WHERE column1 > 10;
✅ 비교: Pandas는 DataFrame 객체에서 컬럼을 직접 선택하고 조건을 적용하지만, SQL은 SELECT 문을 사용하여 조회합니다.
2. 데이터 필터링 (WHERE, FILTER)
Pandas
df[df['age'] > 30] # 특정 조건 필터링
df[(df['age'] > 30) & (df['salary'] > 50000)] # 여러 조건 결합
SQL
SELECT * FROM table WHERE age > 30;
SELECT * FROM table WHERE age > 30 AND salary > 50000;
✅ 비교: SQL은 WHERE 절을 사용하며, Pandas는 boolean indexing을 사용하여 데이터를 필터링합니다.
3. 정렬 (ORDER BY)
Pandas
df.sort_values(by='salary', ascending=False) # 내림차순 정렬
SQL
SELECT * FROM table ORDER BY salary DESC;
✅ 비교: SQL의 ORDER BY와 유사하게 Pandas는 sort_values() 메서드를 사용합니다.
4. 그룹화 및 집계 (GROUP BY)
Pandas
df.groupby('department')['salary'].mean() # 부서별 평균 급여 계산
df.groupby(['department', 'role'])['salary'].agg(['mean', 'sum']) # 여러 그룹화 및 집계
SQL
SELECT department, AVG(salary) FROM table GROUP BY department;
SELECT department, role, AVG(salary), SUM(salary) FROM table GROUP BY department, role;
✅ 비교: SQL에서는 GROUP BY를 사용하고, Pandas에서는 groupby() 메서드를 사용하여 유사한 결과를 얻습니다.
5. 조인 (JOIN)
Pandas
df1.merge(df2, on='id', how='inner') # INNER JOIN
df1.merge(df2, on='id', how='left') # LEFT JOIN
SQL
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
✅ 비교: SQL과 Pandas 모두 조인을 지원하지만, Pandas는 merge()를 사용합니다.
6. 데이터 추가 및 삭제 (INSERT, DELETE, UPDATE)
Pandas
df.loc[len(df)] = [value1, value2] # 행 추가
df = df.append(new_row, ignore_index=True) # 행 추가 (비추천, 최신 버전에서 제거됨)
df.drop(columns=['column1'], inplace=True) # 컬럼 삭제
df.drop(index=3, inplace=True) # 특정 행 삭제
SQL
INSERT INTO table VALUES (value1, value2);
DELETE FROM table WHERE id = 3;
ALTER TABLE table DROP COLUMN column1;
✅ 비교: Pandas는 drop()을 사용해 행과 열을 삭제하며, SQL은 DELETE 및 ALTER 명령을 사용합니다.
7. 데이터 변형 (UPDATE, CASE WHEN)
Pandas
df['salary'] = df['salary'] * 1.1 # 급여 10% 증가
df['status'] = df['age'].apply(lambda x: 'Senior' if x > 50 else 'Junior') # 조건에 따른 값 설정
SQL
UPDATE table SET salary = salary * 1.1;
SELECT age, CASE WHEN age > 50 THEN 'Senior' ELSE 'Junior' END AS status FROM table;
✅ 비교: SQL은 UPDATE와 CASE WHEN을 사용하지만, Pandas는 apply()나 벡터 연산을 활용합니다.
8. 데이터 피벗 (PIVOT)
Pandas
df.pivot_table(index='department', columns='role', values='salary', aggfunc='sum')
SQL
SELECT department, role, SUM(salary) FROM table GROUP BY department, role PIVOT();
✅ 비교: Pandas는 pivot_table()을 사용하고, SQL은 일부 데이터베이스에서 PIVOT 기능을 제공합니다.
9. 윈도우 함수 (WINDOW FUNCTION)
Pandas
df['rank'] = df['salary'].rank(method='dense', ascending=False) # 순위 계산
df['rolling_avg'] = df['salary'].rolling(window=3).mean() # 이동 평균
SQL
SELECT salary, RANK() OVER (ORDER BY salary DESC) AS rank FROM table;
SELECT salary, AVG(salary) OVER (PARTITION BY department ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) FROM table;
✅ 비교: SQL은 OVER() 절을 사용하며, Pandas는 rolling() 또는 rank()로 구현할 수 있습니다.
10. 데이터 저장 및 불러오기
Pandas
df.to_csv('data.csv') # CSV 저장
df.to_sql('table_name', con=engine, if_exists='replace') # SQL DB 저장
df = pd.read_csv('data.csv') # CSV 불러오기
df = pd.read_sql('SELECT * FROM table', con=engine) # SQL DB에서 불러오기
SQL
COPY table TO 'data.csv' DELIMITER ',' CSV HEADER;
COPY table FROM 'data.csv' DELIMITER ',' CSV HEADER;
✅ 비교: Pandas는 다양한 파일 형식(CSV, Excel, JSON, SQL)과 호환되며, SQL도 데이터 내보내기 및 가져오기가 가능합니다.
총정리
기능 | Pandas | SQL |
|---|---|---|
조회 |
|
|
필터링 |
|
|
정렬 |
|
|
그룹화 |
|
|
조인 |
|
|
데이터 추가 |
|
|
데이터 삭제 |
|
|
데이터 수정 |
|
|
피벗 |
|
|
윈도우 함수 |
|
|
✅ 결론:
Pandas는 파이썬 환경에서 빠른 데이터 분석에 적합
SQL은 대량의 데이터를 효율적으로 처리하는 데 최적화됨
둘을 함께 사용하면 강력한 데이터 분석 및 처리 가능 🚀