Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSV
- 釜つる
- 체코
- terraform
- local
- 미츠이 스미토모
- 熱海
- vba
- PostgreSQL
- 태국
- JenkinsFile
- javascript
- 카마츠루
- 아타미
- 메르페이
- 페이페이
- 뮌헨
- Python
- documentdb
- codebuild
- 프라하
- PayPay
- node.js
- typescript
- duckdb
- Selenium
- 방콕
- react.js
- pyenv
- 三井住友カード
Archives
- Today
- Total
도쿄사는 외노자
Pandas를 이용한 데이터 추출 본문
Pandas
Pandas Dataframe
- 2차원의 데이터에 대응하는 데이터 구조
- 열&행으로 데이터 추출 가능
- 1행 or 1열의 정보는 series에 대응
Pandas read_html
지정한 URL상의 table태그를 가져옴
pd.read_html(url, 그외 임의의 인수)
인수 | 필수/임의 | 설명 |
---|---|---|
URL | 필수 | 읽기 대상의 URL |
header | 임의 | 헤더에 지정하는 행 지정 |
index_col | 임의 | 인덱스에 지정하는 열 지정 |
skiprows | 임의 | 읽지 않는 행수 |
반환값
- DataFrame 리스트
Yahoo Finance에서 일본주 랭킹 가져오기
import pandas as pd
url = "https://info.finance.yahoo.co.jp/ranking/?kd=4"
data = pd.read_html(url,header=0)
상위 5개 항목
data[0].head()
順位 | 名称・コード・市場 | 取引値 | 発行済み株式数 | 時価総額(百万円) | 単元株数 | |
---|---|---|---|---|---|---|
0 | 1 | トヨタ自動車(株)7203東証PRM掲示板 | 2,08415:00 | 16,314,987,460株 | 34,000,434百万円 | 100 |
1 | 2 | 日本電信電話(株)9432東証PRM掲示板 | 3,99615:00 | 3,622,012,656株 | 14,473,563百万円 | 100 |
2 | 3 | ソニーグループ(株)6758東証PRM掲示板 | 11,42515:00 | 1,261,081,781株 | 14,407,859百万円 | 100 |
3 | 4 | (株)キーエンス6861東証PRM掲示板 | 49,05015:00 | 243,207,684株 | 11,929,337百万円 | 100 |
4 | 5 | KDDI(株)9433東証PRM掲示板 | 4,54415:00 | 2,304,179,550株 | 10,470,192百万円 | 100 |
하위 5개 항목
data[0].tail()
順位 | 名称・コード・市場 | 取引値 | 発行済み株式数 | 時価総額(百万円) | 単元株数 | |
---|---|---|---|---|---|---|
45 | 46 | コマツ6301東証PRM掲示板 | 3,18215:00 | 973,145,800株 | 3,096,550百万円 | 100 |
46 | 47 | オリックス(株)8591東証PRM掲示板 | 2,42115:00 | 1,258,277,087株 | 3,046,289百万円 | 100 |
47 | 48 | 三菱電機(株)6503東証PRM掲示板 | 1,38115:00 | 2,147,201,551株 | 2,965,285百万円 | 100 |
48 | 49 | ルネサスエレクトロニクス(株)6723東証PRM掲示板 | 1,49115:00 | 1,948,507,856株 | 2,905,225百万円 | 100 |
49 | 50 | パナソニック ホールディングス(株)6752東証PRM掲示板 | 1,179.515:00 | 2,453,866,297株 | 2,894,335百万円 | 100 |
매매가 수정
문자열 자르기를 통해, 가격과 시간이 붙어있는 문제 해결
이를 응용하여, 수치나 DateTime 등도 수정 가능
data[0]["値"] = [i[:-5] for i in data[0]["取引値"]]
data[0]["基準時間"] = [i[-5:] for i in data[0]["取引値"]]
data[0]["名称"] = [i[:-12] for i in data[0]["名称・コード・市場"]]
data[0]["コード"] = [i[-12:][:-8] for i in data[0]["名称・コード・市場"]]
data[0].head()
順位 | 名称・コード・市場 | 取引値 | 発行済み株式数 | 時価総額(百万円) | 単元株数 | 値 | 基準時間 | 名称 | コード | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | トヨタ自動車(株)7203東証PRM掲示板 | 2,08415:00 | 16,314,987,460株 | 34,000,434百万円 | 100 | 2,084 | 15:00 | トヨタ自動車(株) | 7203 |
1 | 2 | 日本電信電話(株)9432東証PRM掲示板 | 3,99615:00 | 3,622,012,656株 | 14,473,563百万円 | 100 | 3,996 | 15:00 | 日本電信電話(株) | 9432 |
2 | 3 | ソニーグループ(株)6758東証PRM掲示板 | 11,42515:00 | 1,261,081,781株 | 14,407,859百万円 | 100 | 11,425 | 15:00 | ソニーグループ(株) | 6758 |
3 | 4 | (株)キーエンス6861東証PRM掲示板 | 49,05015:00 | 243,207,684株 | 11,929,337百万円 | 100 | 49,050 | 15:00 | (株)キーエンス | 6861 |
4 | 5 | KDDI(株)9433東証PRM掲示板 | 4,54415:00 | 2,304,179,550株 | 10,470,192百万円 | 100 | 4,544 | 15:00 | KDDI(株) | 9433 |
필요없는 열 삭제
data[0] = data[0].drop(['名称・コード・市場', '取引値'], axis=1)
data[0].head()
順位 | 発行済み株式数 | 時価総額(百万円) | 単元株数 | 値 | 基準時間 | 名称 | コード | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 16,314,987,460株 | 34,000,434百万円 | 100 | 2,084 | 15:00 | トヨタ自動車(株) | 7203 |
1 | 2 | 3,622,012,656株 | 14,473,563百万円 | 100 | 3,996 | 15:00 | 日本電信電話(株) | 9432 |
2 | 3 | 1,261,081,781株 | 14,407,859百万円 | 100 | 11,425 | 15:00 | ソニーグループ(株) | 6758 |
3 | 4 | 243,207,684株 | 11,929,337百万円 | 100 | 49,050 | 15:00 | (株)キーエンス | 6861 |
4 | 5 | 2,304,179,550株 | 10,470,192百万円 | 100 | 4,544 | 15:00 | KDDI(株) | 9433 |
컬럼 순서 변경
필요없는 컬럼은 여기서도 삭제 가능
data[0] = data[0][['順位','コード', '名称', '値', '時価総額(百万円)', '発行済み株式数','単元株数']]
data[0].head()
順位 | コード | 名称 | 値 | 時価総額(百万円) | 発行済み株式数 | 単元株数 | |
---|---|---|---|---|---|---|---|
0 | 1 | 7203 | トヨタ自動車(株) | 2,084 | 34,000,434百万円 | 16,314,987,460株 | 100 |
1 | 2 | 9432 | 日本電信電話(株) | 3,996 | 14,473,563百万円 | 3,622,012,656株 | 100 |
2 | 3 | 6758 | ソニーグループ(株) | 11,425 | 14,407,859百万円 | 1,261,081,781株 | 100 |
3 | 4 | 6861 | (株)キーエンス | 49,050 | 11,929,337百万円 | 243,207,684株 | 100 |
4 | 5 | 9433 | KDDI(株) | 4,544 | 10,470,192百万円 | 2,304,179,550株 | 100 |
Pandas set_index
DataFrame에 인덱스 설정
DataFrame.set_index(열 이름, 임의의 인수)
data[0].set_index("順位", inplace=True)
data[0].head()
コード | 名称 | 値 | 時価総額(百万円) | 発行済み株式数 | 単元株数 | |
---|---|---|---|---|---|---|
順位 | ||||||
1 | 7203 | トヨタ自動車(株) | 2,084 | 34,000,434百万円 | 16,314,987,460株 | 100 |
2 | 9432 | 日本電信電話(株) | 3,996 | 14,473,563百万円 | 3,622,012,656株 | 100 |
3 | 6758 | ソニーグループ(株) | 11,425 | 14,407,859百万円 | 1,261,081,781株 | 100 |
4 | 6861 | (株)キーエンス | 49,050 | 11,929,337百万円 | 243,207,684株 | 100 |
5 | 9433 | KDDI(株) | 4,544 | 10,470,192百万円 | 2,304,179,550株 | 100 |
Pandas to_csv
DataFrame(Series)를 CSV파일로 출력
DataFrame(Series).to_csv(저장할 디렉토리 + CSV파일명)
data[0].to_csv("./StockRanking")
'Tech > Python' 카테고리의 다른 글
parallel execute sample (2) | 2023.12.06 |
---|---|
newspaper로 네이버 뉴스 가져오기 (0) | 2022.06.10 |
Beautiful Soup로 뉴스 내용 가져오기 (0) | 2022.06.10 |
Requests & BeautifulSoup 기본기 (0) | 2022.06.03 |
Requests를 사용한 파일 다운로드 (0) | 2022.05.27 |