Python 266

[Python] Pandas - 데이터프레임 데이터 조작 2

개요 2022.12.20 - [Python] Pandas - 데이터프레임 데이터 조작 1에 이어 데이터 조작 방법을 마저 정리한다. apply 행이나 열 단위로 복잡한 처리를 할 때 사용할 수 있는 함수다. 매개변수로 행 또는 열을 받는 함수를 넣으면 각 열 또는 행을 반복하여 그 함수에 적용시킨다. 예로 들어 아래의 데이터가 있다고 하자. df3 = pd.DataFrame({ 'A': [1, 3, 4, 3, 4], 'B': [2, 3, 1, 2, 3], 'C': [1, 5, 2, 4, 4] }) df3 # 실행 결과 A B C 0 1 2 1 1 3 3 5 2 4 1 2 3 3 2 4 4 4 3 4 각 열의 최대값과 최솟값의 차이는 아래와 같이 계산할 수 있다. df3.apply(lambda x: x.m..

[Python] Pandas - 데이터프레임 데이터 조작 1

개요 Pandas는 NumPy 2차원 배열에서 가능한 대부분의 데이터 처리를 할 수 있다. 어떤 기능을 제공하는지 정리해둔다. count NaN을 제외한 데이터의 개수를 센다. DataFrame의 경우 열 마다 개수를 세기 때문에 누락된 부분을 찾을 때 유용하다. 데이터가 아래와 같다고 하자. np.random.seed(2) df = pd.DataFrame(np.random.randint(5, size=(4, 4)), dtype=float) df.iloc[2, 3] = np.nan df # 실행 결과 0 1 2 3 0 0.0 0.0 3.0 2.0 1 3.0 0.0 2.0 1.0 2 3.0 2.0 4.0 NaN 3 4.0 3.0 4.0 2.0 이 데이터 각 열의 개수는 4 4 4 3이다. df.count(..

[Python] Pandas - 데이터프레임 고급 인덱싱 2

개요 2022.12.17 - [Python] Pandas - 데이터프레임 고급 인덱싱 1에 이어 Dataframe 인덱서 중 하나인 iloc 인덱서에 대해 정리한다. iloc 순서를 나타내는 정수 기반으로 2차원 인덱싱할 때 아래와 같이 사용할 수 있다. df.iloc[x, y] 라벨이 아니라 정수 인덱스만 받는다는 점만 제외하면 loc 인덱서와 동일하다. 예시 아래 DataFrame을 예시로 살펴본다. df = pd.DataFrame(np.arange(10, 22).reshape(3, 4), index=["a", "b", "c"], columns=["A", "B", "C", "D"]) df # 실행 결과 A B C D a 10 11 12 13 b 14 15 16 17 c 18 19 20 21 단일 값 ..

[Python] Pandas - 데이터프레임 고급 인덱싱 1

인덱싱 DataFrame에서 특정 데이터를 골라내는 것 Pandas에서는 2차원 인덱싱을 지원하기 위해 라벨, 라벨 리스트, 슬라이싱을 통해 인덱싱을 할 수 있을 뿐만 아니라 loc, iloc라는 인덱서를 제공한다. 이 글에서는 loc 인덱서에 대해 정리한다. loc 라벨 값을 기반으로 2차원 인덱싱하며 아래와 같이 사용할 수 있다. df.loc[행 인덱스] df.loc[행 인덱스, 열 인덱스] 인덱스는 아래와 같은 값이 올 수 있다. 인덱스 데이터 슬라이스 리스트 boolean series 인덱스 데이터, 슬라이스, 리스트, boolean series를 반환하는 함수 예시 아래 DataFrame을 예시로 하여 정리한다. df = pd.DataFrame(np.arange(10, 22).reshape(3,..

[Python] DataFrame 생성 시 ValueError: If using all scalar values, you must pass an index

현상 DataFrame은 일종의 딕셔너리처럼 생각할 수 있으므로 아래와 같은 코드로 DataFrame을 생성하려고 했다. import pandas as pd d = { 'col_1': 1, 'col_2': 2 } pd.DataFrame(d) 하지만 ValueError: If using all scalar values, you must pass an index가 발생하면서 실패했다. 무엇이 문제였을까? 원인 2022.12.10 - [Python] Pandas - DataFrame 1에서 살펴본 것에 의하면 DataFrame은 공통 인덱스를 가진 column series를 딕셔너리로 묶어놓은 것이다. 즉, Series로 취급할 수 없는 단일 값을 가지는 딕셔너리를 전달한 것이 에러가 발생한 원인이다. 해결 ..

Python 2022.12.16

[Python] Pandas - 데이터 입출력(CSV)

데이터 입출력 Pandas는 데이터 파일을 읽어서 DataFrame을 만들거나 DataFrame을 데이터 파일로 내보낼 수 있다. 지원하는 형식은 CSV, Excel, HTML, JSON, HDF5, SAS, STATA, SQL 등이 있다. 이 글에서는 CSV를 위주로 다루겠다. %%writefile %%writefile 명령은 셀에서 서술한 내용을 텍스트 파일로 만든다. %%writefile test.csv c1, c2, c3 1, 1.11, one 2, 2.22, two 3, 3.33, three # 실행 결과 Writing test.csv CSV 파일 읽기 pandas.read_csv 함수를 사용하여 CSV 파일로부터 데이터를 읽어 들일 수 있다. 매개변수로 파일의 이름을 전달한다. pd.read_..

[Python] Pandas - DataFrame 2

개요 2022.12.10 - [Python] Pandas - DataFrame 1에 이어서 DataFrame에 대해 정리한다. 열 인덱싱 DataFrame은 column label을 키로 하고, column series를 값으로 하는 딕셔너리와 비슷하다. 따라서 column label을 사용해 인덱싱할 수 있다. 한 개의 컬럼을 지정하면 Series가, 리스트로 두 개 이상의 컬럼을 지정하면 DataFrame이 반환된다. data = { "2015": [9904312, 3448737, 2890451, 2466052], "2010": [9631482, 3393191, 2632035, 2431774], "2005": [9762546, 3512547, 2517680, 2456016], "2000": [9853..

[Python] Pandas - DataFrame 1

DataFrame DataFrame은 2차원 행렬 데이터에 인덱스를 붙인 것과 같다. 각 행에 행 인덱스(row index), 열에는 열 인덱스(column index)를 붙일 수 있다. DataFrame 생성 DataFrame을 간단히 생성하는 방법은 다음과 같다. 1. 힌 개의 열이 될 데이터를 리스트나 1차원 배열로 준비한다. 2. 열에 대한 이름을 키로 가지는 딕셔너리를 생성한다. 3. 데이터를 DataFrame 생성자로 전달한다. 열 인덱스는 columns 인수로, 행 인덱스는 index 인수로 지정한다. data = { "2015": [9904312, 3448737, 2890451, 2466052], "2010": [9631482, 3393191, 2632035, 2431774], "2005"..

[Python] Pandas - Series 2

개요 2022.12.05 - [Python] Pandas - Series 1에 이어서 Series 클래스를 마저 정리한다. 시리즈와 딕셔너리 자료형 Series 객체는 인덱스 라벨을 통해 인덱싱할 수 있으므로 인덱스 라벨을 키로 하는 딕셔너리와 같다고 할 수 있다. 때문에 딕셔너리가 제공하는 in 연산도 가능하고 items 메서드를 이용해 키, 값을 접근할 수도 있다. in 연산 s = pd.Series([9904312, 3448737, 2890451, 2466052], index=["서울", "부산", "인천", "대구"]) '부산' in s, '경기' in s # 실행 결과 (True, False) items() s = pd.Series([9904312, 3448737, 2890451, 2466052..

[Python] Pandas - Series 1

Pandas Python에서 데이터를 다룰 때 빠질 수 없는 패키지로, pandas를 이용하면 다양한 방법으로 데이터를 조작할 수 있다. 대부분의 데이터는 시계열(Series)이나 표(Table) 형태로 나타낼 수 있는데, pandas는 이러한 데이터를 다룰 수 있도록 Series, Dataframe 클래스를 제공한다. 패키지 import pandas 패키지를 import 할 때는 관례적으로 pd라는 이름을 사용한다. import pandas as pd Series NumPy에서 제공하는 1차원 배열과 유사하지만 데이터의 의미를 나타내는 index를 붙일 수 있다. 데이터는 value에 해당한다. 생성 리스트나 1차원 배열 형식의 데이터를 Series 클래스 생성자로 전달하면 Series 클래스 객체를 ..