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 |
Tags
- 나타나지 않을 때
- Zoom 자막 추출
- GridSerarchCV
- 유튜브자막 추출하는법
- 노션 countif
- 개발자도구로 영상자막 다운받는법
- 하이퍼파라미터최적화
- 유튜브자막다운로드
- Optuna
- deepseek
- RandomSearchCV
- 테스트데이터
- 새싹LLM강의
- hyperparameter-optimization
- Zoom 영상 자막 다운
- 안지워지는이유
- 영상 자막 추출
- 딥시크
- LLM
- (도봉 SW 1기) LLM 활용 인공지능 서비스 개발자 양성과정
- One-Hot encoding
- 도봉1기llm
- 도봉1기
- 유튜브자막 추출
- ChatGPT
- SeSAC
- randomstate
- JAVA EE Integration
- Zoom자막
- Raytune
Archives
- Today
- Total
잇연
[sesac LLM] day11-240113 Pandas, DataFrame, Series 본문
복습
Rest API
- get : url로 데이터를 전달
- post: 패킷의 body에 데이터를 전달,감춰서 전달, 많이 보낼 수 있다.
Pandas
Pandas는?
- Wes McKinney가 시작한 오픈소스 프로젝트
- 데이터 분석을 위해 만들어졌다.
- 이전에는 R이 데이터 처리와 분석 영역에서 강세였는데, Python이 양대산맥이 될 수 있도록 만듦
- talkPython : Wes McKinney가 Python에 대해서 이야기하는 팟캐스트이다. (파이썬에 대한 썰을 푸는데, 재미로 들어도 좋고, 실제로 만든 사람이 이야기하는 내용이니 해당 언어나 라이브러리에 대해서도 더 이해가 깊어질 수 있다.)
데이터 분석에서 Pandas를 많이 쓰는 이유 WHY?
- 표 형태의 데이터를 쉽게 조작, 분석 가능
- Pandas의 핵심 객체 : DataFrame, Series
- 엑셀에서 모든 일을 Pandas에서 할 수 있는데 , 엑셀보다 좋은점 : Python의 다른 라이브러리들과 결합해서 쓸 수 있다.
DataFrame
- DataFrame은 행(row)과 열(column)로 구성된 2차원 데이터 구조
- SQL 테이블이나 엑셀 스프레드 시트와 비슷하게 생각하면 된다.
- 행 : row 열 :column 행과 열 모두 다 인덱스로 되어있다.
- *주의 행 인덱스: 각 행을 구별하는 데 사용됩니다. 이는 데이터의 위치를 나타내며, 보통 숫자, 문자열, 날짜 등 다양한 형태로 될 수 있습니다. 열 인덱스: 각 열의 이름으로 사용됩니다. 이는 데이터의 속성이나 변수를 나타내며, 주로 문자열로 구성됩니다.
- 열은 주로 속성 값으로, 행은 객체의 이름으로 구성되며 데이터는 주로 행 방향으로 추가된다. (아래로)
- 각 열은 동일한 데이터 타입을 가진다.
- Pandas 에서는 행과 열에 이름을 붙일 수 있다.
DataFrame예제코드
pip install pandas
import pandas as pd
# DataFrame 생성
data = {
'이름': ['철수', '영희', '민수'],
'age': [28, 22, 31],
'gender': ['남', '여', '남']
}
df = pd.DataFrame(data)
# DataFrame 출력
df
#나이만 받고싶다 하면
df['gennder']
# 컬럼 이름 정의
columns = ['이름', 'age', 'gender']
df2 = pd.DataFrame(data, columns=columns)
# DataFrame 출력
df2
이런 식으로 아까와 달리 리스트로 만들 수도 있다. 동일하게 만들 수 있다.
Series
- Series 는 Pandas에서 1차원 배열과 같은 데이터 구조이다.
- 하나의 열에 해당하는 데이터와 인덱스를 가지고 있다.
import pandas as pd
# Series 생성
data = pd.Series([100, 200, 300, 400, 500], index=['a', 'b', 'c', 'd', 'e'])
# Series 출력
print(data)
- DataFrame 과 Series 는 Pandas의 기본 자료형이다.
- DataFrame 은 표 형태의 데이터를, Series 는 한 줄의 벡터 데이터(열, 칼럼, 리스트 등등)로 표현된다.
만약에 데이터프레임을 csv로 만들고 싶다면, 다음과 같이 써주면 csv가 생성된다.
df.to_csv("df.csv", index=False)
#결과(df.csv 파일생성)
이름,age,gender
철수,28,남
영희,22,여
민수,31,남
그리고 해당 csv를 읽고 싶을 때는 다음과 같이 입력한다.
df = pd.read_csv("df.csv")
#내보내기
pd.to_csv("파일이름.csv", index=False)
#불러내기
pdf.read_csv("파일이름.csv")
#다른 확장자도 쓸 수 있다.
구글에서 Gephi 검색해서 다운로드 받고 설치…
실습
열린 국회정보 API 및 Pandas 실습
- 판다스 리퀘스트 설치
!pip install pandas requests
- 임포트 해주기
import requests
import pandas as pd
import itertools
- 발급받은 api키 입력
# 발급 받은 API 키
YOUR_API_KEY = '640b6edf35bb47f280aac61745395c9e'
# 국회의원 발의법률안 데이터 아이디
data_id = 'nzmimeepazxkubdpn'
- url로 데이터 가져오기
url = f"https://open.assembly.go.kr/portal/openapi/{data_id}?KEY={YOUR_API_KEY}&AGE=21&Type=json"
response = requests.get(url).json()
# 한 번에 1000개씩 밖에 데이터를 못가져 온다...
len(response[data_id][1]['row'])
- 데이터 자체는 23371 개 라고 한다.
max_page = response[data_id][0]['head'][0]['list_total_count']
max_page
- 한번에 최대로 가져올 수 있는 데이터의 수는 1000개이다. 23000개의 데이터를 1000개씩 가져오도록 하자. 1000개씩 데이터를 넣어주도록 코드를 짜준다.
all_laws = []
for page_num in range(1, int(max_page/1000+2)):
p_size= page_num*1000
p_index = page_num
url = f"<https://open.assembly.go.kr/portal/openapi/{data_id}?KEY={YOUR_API_KEY}&AGE=21&Type=json&pIndex={page_num}&pSize=1000>"
laws = requests.get(url).json()[data_id][1]['row']
all_laws.extend(laws)
all_laws = pd.DataFrame(all_laws)
all_laws.head()
# 혹시 날아갈까, 데이터를 파일로 저장하자.
all_laws.to_csv("all_laws.csv",index=False)
# 이번에는 국회의원들의 프로필을 털어보자.
data2_id = 'nwvrqwxyaytdsfvhu'
url =f"<https://open.assembly.go.kr/portal/openapi/{data2_id}?KEY={YOUR_API_KEY}&Type=json&UNIT_CD=100020&pSize=1000>"
senators = requests.get(url).json()[data2_id][1]['row']
senators = pd.DataFrame(senators)
senators
# 혹시 날아갈까, 데이터를 파일로 저장하자.
senators.to_csv("senators.csv",index=False)
# 아래는 같은 법률로 발의된 국회의원들의 조합을 찾아서, 그래프를 그리기 위한 데이터를 만드는 과정이다.
all_laws['PUBL_PROPOSER'] = all_laws['PUBL_PROPOSER']+','+all_laws['RST_PROPOSER']
all_laws['senator'] = all_laws['PUBL_PROPOSER'].str.split(',')
all_laws = all_laws[all_laws['senator'].notnull()]
pairs = all_laws['senator'].apply(lambda x: x if x is None else list(itertools.combinations(x,2))).explode()
pairs = pd.DataFrame(pairs.tolist(), columns=['Source', 'Target'])
pairs = pairs[pairs['Target'].notnull()]
# edge_list.csv 파일로 저장하자.
pairs.to_csv("edge_list.csv", index=False)
# edge_list.csv 파일로 저장하자.
pairs.to_csv("edge_list.csv", index=False)
'SESAC LLM 개발자 강의 > Python' 카테고리의 다른 글
[sesac LLM] day12-240117 웹크롤링, 인코딩, 디코딩 (0) | 2024.01.17 |
---|---|
[sesac LLM] day10-240113 GET, POST (0) | 2024.01.16 |
[sesac LLM] day9-240112 Git, Class (0) | 2024.01.12 |
[sesac LLM] day8-240111 Python 모듈 (0) | 2024.01.12 |
[sesac LLM] day7-240110 Python 함수, 스코프, 데코레이터 (0) | 2024.01.10 |