from pandas import Series, DataFrame
import pandas as pd
import numpy as np
<data loading>
data_url = 'https://..'
df_data = pd.read_csv(data_url, sep = '\s+', header = None)
df_data.head()
판다스는 파이썬 계의 엑셀로 불리우는데, 강력한 스프레드시트 처리기능을 제공한다.
판다스에서 쓰는 것은 dataframe.
dataframe 중 하나의 열에 해당하는 데이터 모음이 "Series"
그 데이터를 나타내는 data table 전체가 dataframe!
Series
list_d = [1, 2, 3, 4, 5]
examp = Series(data = list_d)
examp
## 첫 열은 index, 둘째 열은 data, 아래쪽엔 data type 출력됨
index_name = ["a", "c", "b", "e", "d"]
examp_re = Series(data = list_d, index = index_name)
examp_re
## 위와 같지만, 위는 index가 0부터 1씩 증가하는 수열로 표현됐다면,
## 여기선 index가 a c b e d 이렇게 표현된다. index는 정렬될 필요가 없다.
examp_rere = Series(data = list_d, index = index_name, dtype = np.float32, name = 'exam')
## 위와 비슷한데, 데이터가 정수형이 아니라 실수형으로 표현되고, Name이 선언된다.
examp_rere["a"]
## 1.0
examp_rere["a"] = 0.5
examp_rere.name = "number"
examp_rere.index.name = "alpha"
examp_rere
# "a"인덱스의 값이 0.5로 바뀌고, Name도 number로 바뀌고, index의 열이름도 alpha로 바뀌어 출력
examp_rere.values
# 값 리스트만
examp_rere.index
# index 리스트만
dict_data = {"a":1, "b":2, "c":3, "d":4, "e":5}
indexx = ["a", "b", "c", "d", "e", "f", "g", "h"]
series_obj = Series(dict_data, index = indexx)
series_obj
## index는 다 출력되고, index는 있지만 값은 없는 경우는 NaN으로 표시된다. dtype은 float64로
DataFrame
# column_name : data
raw_data = {'first_name' : ['Jason', 'Molly', 'Tine', 'jake', 'mam'],
'last_name' : ['Meill', 'jaclo', 'ali', 'nilmel', 'cool'],
'age' : [42, 15, 25, 35, 41],
'city' : ['Seoul', 'incheon', 'cheonan', 'jejudo', 'city']}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'city'])
DataFrame(raw_data, columns = ["age", "city"])
## 그 열들만 출력
DataFrame(raw_data, columns = ["first_name", "last_name", "age", "city", "debt"]
## 열들을 선언하는데, 원래 없던 열은 그 값들이 NaN으로 선언됨.
df.first_name
df["first_name"]
## first_name 시리즈가 출력됨
df.loc[1]
# 1열엔 열이름, 2열엔 1번째 행(즉, 2행)이 출력된다.
df["age"].iloc[1:]
# 1열엔 인덱스, 2열엔 age열의 값 중 1번째 행(즉, 2행)부터 그 이후가 출력된다.
s = pd.Series(np.nan, index = [49, 48, 47, 46, 45, 1, 2, 3, 4, 5]
s.loc[:3] ## index이름이 3인 곳까지.. 즉 49 48 47 46 45 1 2 3 index까지 출력
s.iloc[:3] ## 3번 인덱스(4번째 인덱스) 바로 전까지, 즉 3개가 출력
df.debt = df.age > 40
## df.age > 40 에 따라 그 bool 값인 True, False가 저장됨.
df.T ## tranpose
df.values ## 값출력
df.to_csv() ## csv로 변환
del df["debt"]
## debt 열 삭제
Selection
df["age"].head(3)
# age 열의 앞 3개 행 출력
df[["account", "street"]].head(3)
# 두 열의 3개 행 출력
df[:3]
# 모든 열의 3-1번 index까지, 즉 0, 1, 2 index 행 출력
df[[0, 1, 2]]
# 여러 index
df[account<10000]
# bool index
df.index = df["account"] ## account 열을 index로 사용
del df["account"] ## account 열 삭제
df.head() ## index로 사용되는 account열만 남고, 원래의 account열은 삭제된 dataframe 출력
df.loc[[1124, 2345], ["name", "street"]]
# index열의 값이 1124, 2345인 행을 추출하는데, 열이름이 name, street인 것만 출력
df.iloc[:2, :2]
# column도 0, 1 추출, row도 0, 1 추출
df.index = list(range(0, 15))
# index의 값이 0, 1, 2, ..., 15 이렇게 변경됨.
df.drop(1)
# index의 값이 1인 경우를 없앰
df.drop([2, 4, 5])
# 여러 행 없애기
df.drop("city", axis = 1)
# 열 기준 없애기
한.. 43페이지?까지함.
'스터디' 카테고리의 다른 글
2주차 미션 - 용어정리, matplotlib, norm (0) | 2024.06.02 |
---|---|
차원의 저주 - 1주차 (0) | 2024.05.24 |