티스토리 뷰

python

[python]pandas

코딩계란 2024. 2. 7. 17:49
728x90

pandas

데이터 분석을 위한 고수준의 자료 구조와 데이터 분석 도구를 제공하는 패키지 

 

설치

pip install pandas

 

제공하는 자료 구조 

  • Series: 열이 1개인 데이터 구조
  • DataFrame 열이 1개 이상인 데이터 구조 

Series

index와 value 1개를 가지는 자료 구조 

 

생성

Series(데이터, index = None, dtype = None, copy = False)
  • 데이터는 python의 list, set, dict와 numpy의 ndarray가 가능
  • index는 데이터를 가리키는 이름으로 list나 set 그리고 ndarray를 대입하면 0부터 시작하는 숫자 인덱스가 자동으로 생성되고 dict를 설정하면 key가 index가 된다. 
  • index 옵션에 직접 인덱스를 대입해서 생성하는 것이 가능
  • dtype은 데이터 1개의 자료형으로 설정하지 않으면 pandas가 추론을 하고 직접 설정하면 그 자료형으로 생성된다.
  • Series는 numpy의 1차원 배열과 동일한 구조 
  • copy를 True로 설정하면 데이터를 복제해서 생성하고 False를 설정하면 참조를 가져와서 생성 
price = pd.Series([1000,3000,2000,4000])
print(price)
print(price[1])
#실행 결과
0    1000
1    3000
2    2000
3    4000
dtype: int64
3000

Index와 Values 속성

  • index 속성을 호출하면 인덱스를 numpy의 ndarray로 리턴하고 values 속성을 호출하면 값들을 numpy의 ndarray로 리턴
  • 딥러닝은 기본적으로 numpy의 ndarray를 가지고 수행. 가지고 있는 데이터가 pandas의 자료구조이면 values 속성을 호출해서 numpy의 ndarray를 가지고 호출해야 한다. 
  • index 속성을 이용해서 직접 인덱스 설정이 가능 
  • Series와 Series의 연산은 인덱스를 기준으로 한다. (동일한 인덱스가 없으면 연산을 할 수 없다.)
s1 = pd.Series([100,200,300, np.nan], index=["사과", "배", "한라봉", "천혜향"])
s2 = pd.Series([100,200,300, 500], index=["사과", "한라봉", "천혜향", "무화과"])
print(s1+s2)
#결과
무화과      NaN
배        NaN
사과     200.0
천혜향      NaN
한라봉    500.0
dtype: float64
# 한 쪽에만 존재하거나 np.nan인 데이터가 있으면 결과가 np.nan이 된다.

하나의 데이터를 접근 

Series[인덱스]를 사용

numpy와 동일한 형태로 연산을 수행하고 numpy의 함수 사용 가능

numpy의 1차원 배열과 Series의 차이는 index의 여부 

 

DataFrame

  • 인덱스를 가진 테이블 형태의 자료구조 
  • 관계형 DB의 테이블과 유사하지만 인덱스를 직접 설정할 수 있다는 것이 차이점
  • 직접 생성하는 경우는 dict를 이용하는 경우가 많다. 이때 dict의 키가 컬럼(열의 이름)이 되고 값이 셀의 내용이 된다. 
  • index: DataFrame의 index를 리턴하고 설정할 수 있는 속성
  • columns: 
source = {
    "code":[1,2,3,4],
    "name": ["봄", "여름", "가을", "겨울"],
    "age": [22,23,34,21]
}

df = pd.DataFrame(source)
print(df)
#결과
	code name  age
0     1    봄   22
1     2   여름   23
2     3   가을   34
3     4   겨울   21

head, tail

head와 tail 함수를 이용해서 앞에서 또는 뒤에서 몇 개의 데이터를 추출할 수 있다. (default값은 5개)

#위에서 생성한 DataFrame 사용
print(df.tail(2))
#결과
	code name  age
2     3   가을   34
3     4   겨울   21

info()

데이터 프레임의 개요를 리턴  

#위에서 생성한 DataFrame 사용
print(df.info())
#결과
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   code    4 non-null      int64 
 1   name    4 non-null      object
 2   age     4 non-null      int64 
dtypes: int64(2), object(1)
memory usage: 228.0+ bytes
None

 

 

 

[python] sklearn, pandas(2)

sklearn CMD창에 입력 pip install scikit-learn scikit-learn: machine learning in Python — scikit-learn 1.4.0 documentation Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning A

growingegg.tistory.com

 

728x90

'python' 카테고리의 다른 글

[python] numpy(1)  (0) 2024.02.13
[python] sklearn, pandas(2)  (1) 2024.02.13
[python] 예외 처리  (1) 2024.01.23
[python] 가상 환경 만들기(windows)  (0) 2024.01.18
파이썬과 MySQL 연동  (0) 2024.01.11