Pandas I¶
Pandas¶
- 구조화된 데이터의 처리를 지원하는 Python 라이브러리
- panel data → pandas
- 고성능 array 계산 라이브러리인 numpy와 통합하여, 강력한“스프레드시트” 처리 기능을 제공
- 인덱싱, 연산용 함수, 전처리 함수 등을 제공함
- 데이터 처리 및 통계 분석을 위해 사용
데이터 로드¶
In [1]:
import pandas as pd
In [2]:
data_url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data' #Data URL
df_data = pd.read_csv(
data_url, sep="\s+", header=None
) # csv 타입 데이터 로드, separate는 빈공간으로 지정하고, Column은 없음
- 데이터 로드할때 url을 통해서 로드 가능하다.
- 일반적으로는
.csv
파일 위치를 로드하게 된다.
In [3]:
df_data.head()
Out[3]:
head()
함수는 DataFrame에서 앞에 5개를 보여준다.(default=5) 인자로 숫자를 넣어주면 해당 인자값 만큼 데이터를 보여준다.
In [4]:
df_data.columns = [
"CRIM",
"ZN",
"INDUS",
"CHAS",
"NOX",
"RM",
"AGE",
"DIS",
"RAD",
"TAX",
"PTRATIO",
"B",
"LSTAT",
"MEDV",
]
# Column Header 이름 지정
df_data.head()
Out[4]:
DataFrame의 컬럼명을 설명하고 싶으면 위 처럼 .columns
속성에 값을 지정해 주면 된다.
In [5]:
from pandas import Series, DataFrame
import pandas as pd
import numpy as np
shift
+tab
을 누르면 위와 같은 Docstring을 볼 수 있다.
In [6]:
list_data = [1, 2, 3, 4, 5]
example_obj = Series(data=list_data)
example_obj
Out[6]:
In [7]:
list_data = [1, 2, 3, 4, 5]
list_name = ["a", "b", "c", "d", "e"]
example_obj = Series(data=list_data, index=list_name)
example_obj
Out[7]:
In [8]:
example_obj.index
Out[8]:
In [9]:
example_obj.values
Out[9]:
In [10]:
type(example_obj.values)
Out[10]:
index
인자를 통해서 index 이름을 지정할 수 있다..index
속성을 통해서 index값을 반환 받는다..values
속성을 통해서 data값을 반환 받는다.
In [11]:
dict_data = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5} # data와 index 이름을 지정
example_obj = Series(dict_data, dtype=np.float32, name="example_data")
example_obj
Out[11]:
dtype
인자를 통해서 Data type설정name
인자를 통해서 Series의 이름 설정
data 접근하기¶
In [12]:
example_obj['a']
Out[12]:
data에 값 할당하기¶
In [13]:
example_obj["a"] = 3.2
example_obj
Out[13]:
astype¶
In [14]:
example_obj = example_obj.astype(int)
example_obj
Out[14]:
astype()
메서드를 통해서 타입 변환이 가능하다.
Data에 대한 정보를 저장¶
In [15]:
example_obj.name = "number"
example_obj.index.name = "alphabet"
example_obj
Out[15]:
- 많이 쓰이진 않는다...
In [16]:
dict_data_1 = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
indexes = ["a", "b", "c", "d", "e", "f", "g", "h"]
series_obj_1 = Series(dict_data_1, index=indexes)
series_obj_1
Out[16]:
데이터에는 'a' ~'e'까지의 인덱스가 있지만 index인자로 넣어진 값은 'a' ~ 'h'까지인 list가 index
인자로 들어가게 되면 index
값을 기준으로 Series생성한다. 이때 없는 값은 NaN값이 들어오는 것을 확인 할 수 있다.
DataFrame¶
DataFrame memory¶
DataFrame 생성¶
In [17]:
raw_data = {
"first_name": ["Jason", "Molly", "Tina", "Jake", "Amy"],
"last_name": ["Miller", "Jacobson", "Ali", "Milner", "Cooze"],
"age": [42, 52, 36, 24, 73],
"city": ["San Francisco", "Baltimore", "Miami", "Douglas", "Boston"],
}
df = pd.DataFrame(raw_data, columns=["first_name", "last_name", "age", "city"])
df
Out[17]:
dict
타입으로 넣게 되면 {column_name:data}형태로 넣어진다.
In [18]:
DataFrame(raw_data, columns=["age", "city"])
Out[18]:
columns
인자를 통해서 해당 컬럼만 만들 수 있다.
In [19]:
DataFrame(raw_data, columns=["first_name", "last_name", "age", "city", "debt"])
Out[19]:
- Series와 마찬가지로 없는 column명을 추가하게 되면 NaN값으로 값이 들어간다.
column 선택¶
In [20]:
df = pd.DataFrame(raw_data, columns=["first_name", "last_name", "age", "city"])
df.first_name
Out[20]:
.(column명)
을 통해서 한 컬럼을 가지고 온다.
In [21]:
df['first_name']
Out[21]:
[컬럼명]
을 통해서도 접근 가능
DataFrame indexing¶
- loc: index location
- iloc: index position
loc
은 index이름,iloc
은 index number을 통해서 indexing인 된다.- loc, iloc는 동일하게
[행에 대한 조건,열에 대한 조건]
로 indexing한다.
In [22]:
s = pd.Series(np.nan, index=[49, 48, 47, 46, 45, 1, 2, 3, 4, 5])
s.loc[:3]
Out[22]:
- 처음부터 index의 이름이 3인 값까지 slicing이 된다.
In [23]:
s.iloc[:3]
Out[23]:
- 처음부터 3번째 위치까지 slicing이 된다.
In [24]:
df.loc[:,['first_name','last_name']]
Out[24]:
In [25]:
df["age"].iloc[1:]
Out[25]:
DataFrame handling¶
In [26]:
df['age'] > 40
Out[26]:
In [27]:
df['debt']=df['age'] > 40
df
Out[27]:
- 이렇게 할당도 가능 하다.
In [28]:
values = Series(data=["M", "F", "F"], index=[0, 1, 3])
values
Out[28]:
In [29]:
df
Out[29]:
In [30]:
df["sex"] = values
df
Out[30]:
여기서 'sex'라는 새로운 컬럼에 values라는 Series를 넣게 되는데 이때 Series에 없는 index에 대해서는 자동적으로 DataFrame에서 NaN값으로 처리하게 된다.
transpose¶
In [31]:
df.T
Out[31]:
값 출력¶
In [32]:
df.values
Out[32]:
csv로 변환¶
In [33]:
df.to_csv()
Out[33]:
column 삭제¶
In [34]:
display(df.drop("debt", axis=1))
display(df)
.drop
은 결과 값을 반환하기 때문에 df에는 영향이 없다.
In [35]:
del df['debt']
df
Out[35]:
del
명령어는 해당 값을 메모리에서 삭제한다.
In [36]:
pop = {"Nevada": {2001: 2.4, 2002: 2.9}, "Ohio": {2000: 1.5, 2001: 1.7, 2002: 3.6}}
DataFrame(pop)
Out[36]:
'AI > 이론' 카테고리의 다른 글
Pandas IV (0) | 2021.01.28 |
---|---|
Pandas III (0) | 2021.01.28 |
딥러닝 학습방법 이해하기 (0) | 2021.01.27 |
Pandas II (0) | 2021.01.27 |
경사하강법 II (0) | 2021.01.26 |
경사하강법 I (0) | 2021.01.26 |
행렬 (0) | 2021.01.25 |
벡터 (0) | 2021.01.25 |