본문 바로가기
Python/PANDAS

Pandas - CRUD

by 하니__ 2024. 4. 5.

 

 

 

 

DataFrame 기초

좌측 bold체 : 행, 인덱스 => 기존에는 0123등 컴퓨터가 읽기 편했지만 인간이 편히 사용할 수 있게 가능해졌다
상단 bold체 : 열, 컬럼(column)
안쪽의 데이터 : values - 데이터의 갯수는 인덱스의 갯수

 

데이터 생성하기 .Series( )   .DataFrame(  )

 

 

 

series ( ) 는 데이터프레임의 하위개념으로 1차원 배열을 의미하며

 

넘파이보다는 상위개념이다

 

 

.DataFrame( ) 은 2개 이상의 시리즈가 모여 만들어지는

컴퓨터로 정보를 정리하고 저장하는 도구이자행과 열로 이루어진 배열로 이루어지고 있다

 

 

 

데이터 불러오기

 

 

 

데이터를 불러오기에 앞서 흔히 사용되는

데이터의 저장방법은 .csv로 저장하고 읽고 있다

 

 

CSV 는 무엇?

 

CSV 파일명의 뜻은

CSV =  Comma Seperated Value

라는 뜻이며

 

, 콤마 로 분리된 밸류값이라는 뜻이다

 

 

 

.read_csv(   ) 로 파일을 읽을 수 있으며

괄호안에 파일경로를 적어준다

이 때 상위경로일때에는 ../ 를 적어준다

 

 

 

 

파일을 읽어 왔을때

 

이런 형식으로 인간이 읽기 편하게 , 가 있는경우가 많다 이런경우

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 31 entries, 0 to 30
Data columns (total 11 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   관서명     31 non-null     object
 1   살인 발생   31 non-null     int64 
 2   살인 검거   31 non-null     int64 
 3   강도 발생   31 non-null     int64 
 4   강도 검거   31 non-null     int64 
 5   강간 발생   31 non-null     int64 
 6   강간 검거   31 non-null     int64 
 7   절도 발생   31 non-null     object
 8   절도 검거   31 non-null     object
 9   폭력 발생   31 non-null     object
 10  폭력 검거   31 non-null     object
dtypes: int64(6), object(5)
memory usage: 2.8+ KB

 

데이터 타입이 오브젝트로 되어 있어 데이터를 변환해주어야 한다

 

이럴때에는

 

df = pd.read_csv('../data/crime_in_Seoul.csv', encoding='euc-kr', thousands= ',')

데이터를 읽어올때 파라미터 안에

 

thousands= ',' 

을 넣어주어 1000자리 수마다 ,표시가 있는걸 넣어주자

그렇게 하면

 

1000자리 수마다 찍혀있던 , 가 모두 사라지고

 

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 31 entries, 0 to 30
Data columns (total 11 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   관서명     31 non-null     object
 1   살인 발생   31 non-null     int64 
 2   살인 검거   31 non-null     int64 
 3   강도 발생   31 non-null     int64 
 4   강도 검거   31 non-null     int64 
 5   강간 발생   31 non-null     int64 
 6   강간 검거   31 non-null     int64 
 7   절도 발생   31 non-null     int64 
 8   절도 검거   31 non-null     int64 
 9   폭력 발생   31 non-null     int64 
 10  폭력 검거   31 non-null     int64 
dtypes: int64(10), object(1)
memory usage: 2.8+ KB

데이터 타입도 정수의 형태로 나오게 된다

 

 

 

 

 

 

 

저장은 .to_csv(  ) 이며 괄호에 파일 경로를 따로 적지 않으면 해당환경과 같은 장소에 저장된다

 

.head( )
.tail( )

 

 

.head(  )는 불러온 데이터프레임의 상단 5개를

.tail(  )은 불러온 데이터프레임의 하단 5개를 보여준다

괄호의 기본값은 5이며 괄호안에 숫자를 입력하는 수만큼 보여준다

 

 

 

 

 

데이터값 변경

 

 

 

 

이러한 데이터 프레임이 있을때

store2의 watches 데이터를 변경하는 방법은

이전에 배웠듯이 loc와 iloc가 있다

 

 

 

 

 

컬럼(열) 추가

 

 

 

우선 변수에서 [   ]에 만들 열의 이름을 적고 저장할 value값을  [   ,   ]  괄호안에 넣어주자

 

또 다른 컬럼을 만들때 컬럼 2개의 합으로 넣고 싶을때는

넘파이의 상위개념인것을 잊지말고

바로 더해서 넣어주자

 

행이 많을때 열 하나를 추가할때는

변수[ ' 열 이름 ' ] = ' 밸류값 ' 

을 입력하자

밸류값을 비워두면 공백으로 채워진다

 

 

 

 

 

 

행 추가    .concat( )

 

 

 

 

사실 행을 추가한다는 느낌보다는

새로운 데이터프레임을 만들어

합쳐준다고 생각하는게 이롭다

 

이때 오타가 나게되면 새로운 밸류값이 추가되어

또 삭제하고 변경하고 귀찮게 되니 

오타를 주의하자

 

 

.concat( ) 을 이용하여 행을 추가한다

 

데이터 삭제

 

행 삭제, 열 삭제 
drop(  ) 함수를 이용하고, axis만 설정해주면 된다.

 

 

 

 

.drop( 행, axis = 0 ) 행 삭제

.drop( 열, axis = 1 ) 열 삭제

 

 

그래왔듯이 2개 이상도 가능하다

 

2개 이상인 행이나 열을 리스트로 묶어주면 된다

 

 

 

 

inplace=True 는 바로 저장

 

 

 

인덱스 이름, 컬럼 이름 변경법 

 

 

 

인덱스, 콜럼 변경  .rename(    )

 

 

 

 

 

 

변수.rename(인덱스 or 콜럼 = { 'before' : 'after' }

 

물론 여러개일때는 마찬가지로 리스트로 묶어서 하면 가능하다

 

컬럼을 인덱스로 .set_index(    )

 

 

 

 

.set_index('콜럼') 으로 인덱스로 집어넣을수도

reset_index(   )로 되돌릴 수 있다

 

 

 

 

 

 

 

 

'Python > PANDAS' 카테고리의 다른 글

Pandas - 카테고리컬 데이터 1 - unique( )  (0) 2024.04.05
Pandas - 기초 통계 데이터 describe( )  (0) 2024.04.05
Pandas - NaN  (0) 2024.04.05
Pandas - 기초, Series  (0) 2024.04.05
Pandas - 데이터 엑세스 방법  (0) 2024.04.05