python 281

[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 클래스 객체를 ..

[Python] NumPy - 난수 발생과 카운팅 2

개요 2022.12.02 - [Python] NumPy - 난수 발생과 카운팅 1에 이어 마저 내용을 정리한다. 난수 생성 np.random 패키지는 rand 함수 이외에도 난수를 생성하는 함수를 제공하는데, 그중 많이 사용하는 것은 rand 함수를 포함하여 3가지이다. rand 0부터 1사이의 균일한 확률 분포로 실수 난수를 생성한다. 매개변수로 생성할 난수의 크기를 지정하는데, 여러 개의 인수를 넣으면 해당 크기를 가진 행렬을 생성한다. np.random.rand(10) np.random.rand(3, 5) # 실행 결과 array([0.95894927, 0.65279032, 0.63505887, 0.99529957, 0.58185033, 0.41436859, 0.4746975 , 0.6235101 ..