apply 메서드 apply 메서드는 사용자가 작성한 함수를 한 번에 데이터프레임의 각 행과 열에 적용하여 실행할 수 있게 해주는 메서드이다. 즉, 함수를 브로드캐스팅해야 하는 경우에 apply 메서드를 사용한다. 함수를 하나 만들어 보자. def my_sq(x): return x ** 2 def my_exp(x, n): return x ** n print(my_sq(4)) print() print(my_exp(2, 4)) 이제 apply 메서드를 사용해보자. import pandas as pd df = pd.DataFrame({'a': [10, 20, 30], 'b':[20, 30, 40]}) print(df) print(df['a'] ** 2) 하나하나 적용할 수 있지만 아까 정의해 놓은 함수를 ap..
분류 전체보기
React facebook에서 개발한 라이브러리이다. Component를 기반으로 만들어져 module과 비슷하게 재사용성이 매우 좋다. 또한 Virtual DOM을 사용한다. Virtual DOM과 Real DOM의 차이는 다음과 같다. Virtual DOM Real DOM 로컬에서 Virtual DOM을 생성한 뒤 렌더를 요청하기 전 단계에서 변경 사항을 적용하여 요청하는 방식으로 동작한다. 따라서 어떠한 Component가 변경이 된다면 해당 Component만을 업데이트하면 된다. html 문서를 읽어와 DOM Tree를 생성한 뒤 Rander Tree를 생성한다. 그 후 렌더링을 하는 구조이다. 따라서 어떠한 Component가 변경이 된다면 전체 페이지에 대한 Tree들을 다시 작성하여 렌더링..
문자열 다루기 문자열은 작은따옴표나 큰따옴표로 감싸서 만든다. 문자열은 인덱스를 갖고 있고 이를 통해 접근이 가능하다. word = 'grail' sent = 'a scratch' print(word[0]) print() print(sent[0]) 인덱스 슬라이싱을 사용하면 여러 개의 문자를 한 번에 추출할 수 있다. print(word[0:3]) 음수를 적용하면 -1이 마지막 문자이다. print(sent[0:-8]) 왼쪽과 오른쪽 중 하나만 지정하게 되면 마지막 위치까지 모두 추출한다. print(word[:3]) 문자열 메서드 문자열에 대한 작업을 하는 메서드가 여러 개 있다. 모두 소문자로 변환하거나 대문자로 변환하는 등 자주 사용되는 메서드를 봐보자. join 메서드 join 메서드는 문자열을 ..
자료형 다루기 자료형 변환은 데이터 분석 과정에서 반드시 알아야 하는 요소 중 하나이다. 예를 들어 카테고리는 문자열로 변환해야 데이터 분석을 수월하게 할 수 있다. 또 다은 예는 전화번호는 보통 숫자로 저장한다. 하지만 전화번호로 평균을 구하거나 더하는 등의 계산은 거의 하지 않는다. 오히려 문자열처럼 다루는 경우가 더 많다. 데이터를 준비하자. import pandas as pd import seaborn as sns tips = sns.load_dataset("tips") 자료형을 변환하려면 astype 메서드를 사용하면 된다. 다음은 astype 메서드를 사용해 sex 열의 데이터를 문자열로 변환하여 sex_str이라는 새로운 열에 저장한 것이다. tips['sex_str'] = tips['sex..
로그아웃 회원가입과 로그인 기능은 이미 만들었다. 이제 로그아웃 기능을 만들어 보자. 로그인된 유저가 로그아웃을 원한다면 유저의 아이디를 찾아 token을 지워주면 된다. token을 지운다면 clinet가 갖고 있던 token과 일치하는 유저를 찾을 수 없기 때문에 token만 지워도 로그아웃이 된다. 로그아웃 라우터를 우선 만들자. app.get('/api/users/logout', auth, (req, res) => { User.findOneAndUpdate({_id: req.user._id}, {token: ""}, (err, user) => { if(err) return res.json({success: false, err}) return res.status(200).send({ success:..
열과 피벗 데이터프레임의 열은 파이썬의 변수와 비슷한 역할을 한다. 예를 들어 ebola 데이터프레임 열은 사망한 날짜(Date), 발병 국가(Case_Guinea) 등의 데이터를 저장하고 있다. 하지만 이번에 다루는 데이터프레임의 열은 열 자체가 어떤 값을 의미한다. 그러다 보니 데이터프레임의 열이 옆으로 길게 늘어선 형태가 된다. 바로 이것을 '넓은 데이터'라고 한다. 이를 깔끔하게 정리하려면 melt 메서드를 사용해야 한다. melt 메서드의 인자를 정리한 표이다. 퓨 리서치 센터(Pew Research Center)에서 조사한 '미국의 소득과 종교'라는 데이터이다. import pandas as pd pew = pd.read_csv('../data/pew.csv') print(pew.head())..
Auth 기능 어떤 페이지에 로그인된 유저만 사용 가능하게 만들어야 하는 기능이 필요하다. 따라서 로그인하여 Token이 발급된 유저만 사용 가능하게끔 만드는 Auth기능을 만들어야 한다. Cookie에 저장된 token을 decode 우선 auth를 위한 middleware가 필요하니 middleware 폴더를 root에 만든 뒤, auth.js파일을 생성하여 다음과 같이 작성한다. const { User } = require("../models/User"); let auth = (req, res, next) => { //인증 처리 //client cookie token 가져오기 let token = req.cookies.x_auth; //토큰 복호화 & user 찾기 User.findByToken(t..
누락값 누락값은 NaN, NAN, nan과 같은 방법으로 표기한다. 누락값은 0이나 ' '과는 다른 개념이다. 누락값은 말 그대로 데이터 자체가 없다는 것을 의미한다. db에서 null과 같은 개념이다. 따라서 같다는 개념도 없다. from numpy import NaN, NAN, nan print(NaN == True) print() print(NaN == False) print() print(NaN == 0) print() print(NaN == ' ') 또한 값 자체가 없기 때문에 NaN끼리 비교해도 같지 않다. print(NaN == NaN) print() print(NaN == nan) print() print(NaN == NAN) print() print(nan == NAN) 누락값을 확인하려..
로그인 기능 만들기 우선 로그인을 하려면 요청된 이메일이 데이터베이스에 있는지 찾아야 한다. 그다음 요청된 비밀번호와 같은지 여부를 판단한다. 만약 둘 다 일치한다면 Token을 생성하면 된다. 이메일 확인하기 우선 엔드포인트는 './login'으로 하고 post 메서드를 하나 추가한다. 그 후 몽고DB 메서드인 findOne 메서드를 사용하여 일치하는 email을 찾는다. 만약 존재하지 않는다면 실패 메시지를 전달한다. 일치하는 email이 있다면 비밀번호를 비교한다. app.post('/login', (req, res) => { //요청된 이메일을 DB에서 찾는다 User.findOne({ email: req.body.email }, (err, user)=> { if(!user){ return res..
분석하기 좋은 데이터 분석하기 좋은 데이터란 데이터 집합을 분석하기 좋은 상태로 만들어 놓은 것을 말한다. 데이터 분석 단계에서 데이터 정리는 아주 중요하다. 실제로 데이터 분석 작업의 70% 이상을 차지하고 있는 작업이 데이터 정리 작업이다. 분석하기 좋은 데이터는 다음 조건을 만족해야 하고 이러한 데이터를 Tidy Data라고 한다. 데이터 연결 예를 들어 주식 데이터를 분석하는 과정에서 '기업 정보'가 있는 데이터 집합과 '주식 가격'이 있는 데이터 집합이 있을 때 '첨단 산업 기업의 주식 가격에 대한 데이터'를 보려면 어떻게 해야 할까?? 일단 기업 정보에서 첨단 기술을 가진 기업을 찾아야 한다. 그리고 이 기업들의 주식 가격을 찾아야 한다. 그런 다음 찾아낸 2개의 데이터를 연결하면 된다. 이렇..