[파이썬] 판다스 pandas
by mini_min[파이썬] 판다스 pandas
🖋️ 판다스?
파이썬 외부 라이브러리 중 대표적인 패키지이다.
데이터를 쉽게 다룰 수 있는 테이블 형식으로 만들어 준다. 거의 모든 데이터 사이언스 패키지들은 판다스와 연동된다.
# pandas 설치
# cmd> pip install pandas
- series : 1차원 구조(배열 구조)
- DataFrame : 2차원 구조 (행, 열)
- Panel : 3차원 구조
import pandas as pd
#판다스 버전
print(pd.__version__) # 1.5.2
#series : 인덱스를 가지고 있는 1차원 배열과 유사한 자료 구조
sr = pd.Series([1,9,-3,4])
print(sr) # 마지막은 데이터 타입 dtype: int64 정수형이란 뜻
print()
# 값 확인
print(sr.values) # [ 1 9 -3 4] : list랑 다르게 나옴
# 인덱스(0부터 시작)로 값 가져오기
print(sr[2]) # -3
# 인덱스 확인
print(sr.index) # RangeIndex(start=0, stop=4, step=1)
# 자료형 확인
print(sr.dtype)
print()
# 기본 인덱스는 정수이지만 다른 타입으로 설정 가능
sr = pd.Series([100,90,80,95], index=["java", "spring", "css", "oracle"])
print(sr)
print()
print(sr["java"]) # 100
print(sr[0]) # 100
print()
print("값:", sr.values)
print("인덱스:", sr.index)
# 인덱스: Index(['java', 'spring', 'css', 'oracle'], dtype='object')
print()
# Series 는 파이썬의 dict 와 호환된다.
dic = {
"A":3000, "B":6000, "C":000, "D":4000
}
sr = pd.Series(dic)
print(sr)
print()
print(sr.values)
print(sr["C"])
print(sr[2])
print()
# 타입이 달라도 가능
sr = pd.Series([1,"B",3,"D"])
print(sr) # dtype: object
print()
: DataFrame 은 2차원 구조이다.
값, 인덱스, 컬럼 설정을 할 수 있다.
import pandas as pd
# DataFrame : 2차원 구조(행, 열)
values = [[1,2,3], [4,5,6], [7,8,9]]
i = ['one', 'two', 'three']
c = ["A", "B", "C"]
df = pd.DataFrame(values, index=i, columns=c)
print(df)
print("-------------------")
print("인덱스:", df.index)
print("열이름:", df.columns)
print("데이터값")
print(df.values)
print("-------------------")
df = pd.DataFrame(data=[[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]],
columns=["A","B","C","D"],
index=range(1,5))
print(df)
print("-------------------")
: 리스트로 데이터프레임 생성하기
import pandas as pd
# 리스트로 DataFrame 생성
data = [
['1001', '김자바', 93.72],
['1002', '이자바', 75.88],
['1003', '하자바', 90.33],
['1004', '유자바', 62.30],
['1005', '구자바', 80.33],
['1006', '홍자바', 99.15],
]
df = pd.DataFrame(data)
print(df) # 열 명은 0 1 2, 행명은 0 1 2 3 4 5
print("-----------------")
# 인덱스를 1~6으로 변경
df.index = df.index +1
print(df)
print("-----------------")
# 열 이름 지정
df = pd.DataFrame(data, columns=["학번", "이름", "점수"])
print(df)
print("-----------------")
# 인덱스명 지정
idx = ['1번', '2번', '3번', '4번', '5번', '6번']
df = pd.DataFrame(data, index=idx)
print(df)
print("-----------------")
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
: dict 를 데이터 프레임으로 만들기
import pandas as pd
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
print("----------------")
#새로운 열 추가
df['age'] = [20,12,33,20,21,22]
print(df)
print("----------------")
df['pass'] = df['점수'] >= 80
print(df)
print("----------------")
#열 삭제
del df['pass']
print(df)
print("----------------")
: iloc , loc 로 데이터 프레임에 접근할 수 있다.
import pandas as pd
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
print("----------------")
# 레이블명이 0인 행 접근
# loc : 행이나 컬럼에 label 이나 boolean array로 접근
print(df.loc[0])
print()
print(df.loc[1])
print()
print("-------------")
# iloc : 행이나 컬럼에 인덱스로 접근
print(df.iloc[0]) # 첫행
print()
print(df.iloc[2]) # 인덱스가 2인 행 = 세번째 행
print()
print(df.iloc[-1]) # 마지막행
print()
print("-------------")
# 0,1,2행
print(df.loc[0:2]) # 레이블명으로 접근
print()
print(df.iloc[0:3]) # 인덱스로 접근
print()
import pandas as pd
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
print("----------------")
# '학번' 열
print(df['학번'])
print()
# '이름', '점수' 열
print(df[['이름', '점수']])
print()
# loc 로 접근 : 라벨로 접근
print(df.loc[:, '점수'])
print()
# iloc 로 접근 : 인덱스로 접근
print(df.iloc[:, 1])
print()
print(df.iloc[:,2]) # 세번째 열
print()
print(df.iloc[:,-1]) # 마지막 열
print()
: head(n), tail(n) 으로 데이터 프레임 접근하기
import pandas as pd
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
print("----------------")
# head(n) : 앞부분 n개 보기
# tail(n) : 뒷부분 n개 보기
print(df.head(3))
print("----------------")
print(df.tail(3))
print("----------------")
: 데이터 프레임을 list 로 변환한다.
import pandas as pd
#dict 를 데이터 프레임으로
data = {
'학번':['1000', '1001', '1002', '1003', '1004', '1005'],
'이름':['김자바', '이자바', '다자바', '너자바', '신자바', '홍자바'],
'점수':[90.30, 75.33, 99.22, 65.20, 80.45, 77.12]
}
df = pd.DataFrame(data)
print(df)
print("----------------")
# 데이터 프레임을 list 로 변환
a = df.values.tolist()
print(a)
print(f"{'-'*80}\n")
# 인덱스가 2인 열을 리스트로 변환
a = df.iloc[:, 2].tolist()
print(a)
print(f"{'-'*80}\n")
for idx, row in df.iterrows():
print("인덱스:", idx)
print(row)
print("-"*30)
print()
: 데이터 프레임의 합 평균, 최대, 최소, 개수, 정렬 등
import pandas as pd
data = {
'eng':[10,30,50,70],
'kor':[20,40,60,80],
'mat':[90,50,20,70]
}
df = pd.DataFrame(data, index=['A-01', 'A-02', 'A-03', 'A-04'])
print(df)
print(f"{'-'*80}\n")
# 각열의 합 , axis=0 : 열
print(df.sum(axis=0))
print()
# 각행의 합 , axis=1 : 행
print(df.sum(axis=1))
print()
# 각열의 평균 , axis=0 : 열
print(df.mean(axis=0))
print()
# 각행의 평균 , axis=1 : 행
print(df.mean(axis=1))
print()
# 각열의 최대 , axis=0 : 열
print(df.max(axis=0))
print()
# 각행의 최대 , axis=1 : 행
print(df.max(axis=1))
print()
# 각열의 중앙값 , axis=0 : 열
print(df.median(axis=0))
print()
# 각행의 중앙값 , axis=1 : 행
print(df.median(axis=1))
print()
# 각열의 개수 , axis=0 : 열
print(df.count(axis=0))
print()
# 각행의 개수 , axis=1 : 행
print(df.count(axis=1))
print()
# mat 를 기준으로 오름차순 정렬
print(df.sort_values(by="mat"))
print()
# mat 를 기준으로 내림차순 정렬
print(df.sort_values(by="mat", ascending=False))
print()
print(df.sort_values(by="mat", ascending=False).head(3))
print()
print(df.sort_values(by="mat", ascending=False).tail(3))
print()
: csv 파일을 읽어서 판다스 데이터 프레임 객체로 만들기.
import pandas as pd
# csv 파일을 읽어서 판다스 데이터 프레임 객체로 만들기
pathname = "C:/source/data/score.csv"
df = pd.read_csv(pathname)
print(df)
print()
print(df.index) #RangeIndex(start=0, stop=3, step=1)
print()
'Python' 카테고리의 다른 글
[파이썬] sklearn.feature_extraction.text import CountVectorizer (0) | 2023.01.12 |
---|---|
[파이썬] 추천 기능 서비스 (영화 추천 기능) (0) | 2023.01.12 |
[파이썬] JSON (0) | 2022.12.25 |
[파이썬] 정규식 (0) | 2022.12.25 |
[파이썬] 파일 처리 (1) | 2022.12.25 |
블로그의 정보
개발자 미니민의 개발로그
mini_min