10 20 30 40이 저장된 1차원 배열이다.
-
**pd.Series(list, index = [a,b,c,d])**이런식으로 인덱스를 정수형이 아니라 key-value처럼 인덱스를 바꿀 수 있다!
- Rangeindex가 아니라 인덱스 레이블을 지정할 수 있다.
- 이 과정을 dictionary형태로 만들어 한번에 pd.Series(dictionary)로 선언할 수 있다.

-
데이터프레임 생성 예시

이것 또한, 행과 열의 인덱스가 정수형임
pd.DataFrame(np.zeros((4,3)), columns = classes) 이런식으로 선언해주면, classes에 해당하는 리스트로 인덱스레이블을 지정할 수 있다.
이 과정도 DataFrame안의 변수를 dictionary형태로 만들어 선언할 수 있음

각 열의 자료형이 같음
-
데이터프레임은 열 인덱스로 시리즈를 접근(열 우선!)

한개의 열만 리턴된 값은 Series 데이터 타입이다.
복수의 열을 갖고 오고 싶으면, df[’이름’,’수학’] ⇒ 복수의 열을 갖고 온 것이므로 DataFrame 데이터 타입이다.
-
특정 열 데이터 갱신
- df[’영어’] = df[’영어] + 10 ⇒ 넘파이랑 비슷한 방식(브로드 캐스팅)
-
행 인덱싱 : 슬라이싱을 사용해야 함!
- df[1:2] 이런식으로 슬라이싱을 사용하면 행에 대한 인덱스로 접근하는 것임
- 개별 데이터 인덱싱
- 열 선택후 행 인덱싱(df[’국어’][1]) 95 값만 출력(int타)
- 행 선택후 열 인덱싱(df[1:2][’국어’]) → 1 95 정수형 인덱스와 값이 둘 다 출력(Series 타입)
- 행 인덱스 레이블링
- df = pd.DataFrame(dict, index = list) 이런식으로 선언해서 다른 자료형으로 행의 인덱스를 바꿈)
- 그렇다고 해서 df[’변수’]를 불러오더라도(슬라이싱하지 않고 개별변수로 부르더라도) 열에 있는 변수들 중에서 찾지, 행에 있는 변수들에서 찾지 않음
-
불리언 배열을 사용한 인덱싱

- bool_index = df[’수학’] > 90 ⇒ bool_index는 False와 True값을 지닌 Series형태의 변수
- 그 변수를 df안에 넣어서 출력하면 ⇒ true값을 지닌 행들의 정보를 출력함
- df > 90로 지정하고 그 값을 df에 다시 넣어서 출력하면 ⇒ True값을 지닌 개별 데이터들의 정보를 출력함
- NaN = Not a Number, 숫자가 아님 = 존재하지 않는 값
-
데이터프레임 인덱싱 요약

-
고급 인덱싱
- loc : 레이블 기반의 2차원 인덱싱
- df.loc[행 인덱싱 값], df.loc[행 인덱싱 값, 열 인덱싱 값] 이런식으로 구현 가능 + 행 리스트 접근도 가능
- [문자1, 문자2]슬라이싱하면 정수 슬라이싱과 다르게 문자1부터 문자2까지 출력됌 (정수는 n-1까지인데)
- iloc : 순서를 나타내는 정수 기반의 인덱싱 가능
- ex) df.iloc[3][2] 3,2의 좌표에 접근!
-
판다스 csv파일 사용 예시 : read_csv()

이런식으로 구현하면 됌
- df.head() ⇒ 행 0부터 4번째까지만 출력 / df.head(N) ⇒ 행 0부터 N-1까지만 출력
- df.tail()도 head와 같음
- df.index ⇒ 행 출력, df.columns ⇒ 열 출력
- df.describe() ⇒ 열에 대한 평균값, 최대값 등등을 보여줌
- 출력이 데이터 프레임 타입임! 변수에 저장가능