시가 고가 저가 종가
삼성전자 980 80 70 90
카카오 980 80 70 90
네이버 980 80 70 90
import pandas as pd
index = ["삼성전자", "카카오", "네이버"]
data = {
"시가" : [980, 980, 980],
"고가" : [80, 80, 80],
"저가" : [70, 70, 70],
"종가" : [90, 90, 90],
}
df_stock = pd.DataFrame(data = data, index = index)
close = [42500, 42550, 41800, 42550, 42650]
open = [42600, 42200, 41850, 42550, 42500]
index = ['2019-05-31', '2019-05-30',
'2019-05-29', '2019-05-28', '2019-05-27']
open = Series(data=open, index=index)
close = Series(data=close, index=index)
# 출력 :
# 종가가 시가보다 높을 때만 출력
#2019-05-30 42550
#2019-05-27 42650
#dtype: int64
cond = close > open
print(close[cond])
# print(open[cond])시 종가가 시가보다 높을 때의 시가가 출력
data = [3.1, 2.0, 10.1, 5.1]
index = ['000010', '000020', '000030', '000040']
s = Series(data=data, index=index)
# 출력 :
# dtype: float64
# 000030 10.1
# 000040 5.1
# 000010 3.1
# 000020 2.0
dtype: float64
s = pd.Series([1234, 5678, 9876])
#==출력
# 0 작다
# 1 크다
# 2 크다
# dtype: object
def is_over_5000(x) :
if x > 5000 :
result = "크다"
elif x < 5000 :
result = "작다"
else :
result = "같다"
return result
print(s.map(is_over_5000))
: 칼럼명을 키로 하고 값을 리스트 형태로 만들어 DataFrame 생성
import pandas as pd
data = {
"이름": ["김은수", "박정민", "이하나"],
"나이": [35, 30, 28],
"직책": ["과장", "대리", "대리"]
}
df = pd.DataFrame(data)
print(df)
: 2차원 리스트를 이용해서 DataFrame 생성
data = [
["김은수", 35, "과장"],
["박정민", 30, "대리"],
["이하나", 28, "대리"]
]
df = pd.DataFrame(data, columns=["이름", "나이", "직책"])
print(df)
: 각 행을 딕셔너리로 만들어 리스트로 감싸서 DataFrame 생성
data = [
{"이름": "김은수", "나이": 35, "직책": "과장"},
{"이름": "박정민", "나이": 30, "직책": "대리"},
{"이름": "이하나", "나이": 28, "직책": "대리"}
]
df = pd.DataFrame(data)
print(df)
select deptno, sum(sal) as sal
from emp
group by deptno;
단, 부서별 평균 급여가 2000이상인 부서만 출력하세요
select deptno, round(avg(sal), 2) as avg
from emp
group by deptno
having avg(sal) >= 2000;
문제를 잘못 읽어서
select deptno, round(avg(sal), 2) as avg
from emp
where sal >= 2000
group by deptno;
이렇게 짠 다음 왜 위에는 having이지?? 싶어서 where로 바꿨다가 에러났다.
avg()같은 집계 합수는 where절에서 사용할 수 없다는 이유였다.
몰랐던 걸 알게 됐구만...
카테시안 곱(Cartesian Product)은 두 테이블의 모든 조합을 생성하는 연산이다.
SQL에서 JOIN 조건 없이 FROM table1, table2 또는 CROSS JOIN을 수행하면 발생한다.
두 테이블의 모든 행을 조합하여 결과(M x N 개)를 생성한다.
select e.ename, e.hiredate, d.dname
from emp e join dept d
on e.deptno = d.deptno
where e.comm is not null;
select e1.ename, e2.ename as mgr
from emp e1 join emp e2 # 셀프 조인
on e1.mgr = e2.empno;
3줄요약
1. group by 는 해당 컬럼명으로 먼저 분류를 시킨다.
2. 조인이란 두개의 테이블에 대한 카테이션 곱을 의미한다.
3. 데이타 프레임은 시리즈를 1개이상 만들고 컬럼명을 붙인다.
