320x100
# Importing CSV Files
## First Steps
with open('titanic.csv') as f:
text = f.readlines()
text
'''
['survived,pclass,sex,age,sibsp,parch,fare,embarked,deck\n',
'0,3,male,22.0,1,0,7.25,S,\n',
'1,1,female,38.0,1,0,71.2833,C,C\n',
'1,3,female,26.0,0,0,7.925,S,\n',
'1,1,female,35.0,1,0,53.1,S,C\n',
'0,3,male,35.0,0,0,8.05,S,\n',
'0,3,male,,0,0,8.4583,Q,\n',
'''
# 같은게 배열된다.
len(text)
# 892
# pandas의 read_csv()안에 들어가는 매개변수 몇가지 설명
# 매개변수 1 Index_col - 기준 인덱스로 잡아주는 역할을 한다.
import pandas as pd
pd.read_csv('titanic.csv', index_col= 'pclass')
'''
survived sex age sibsp parch fare embarked deck
pclass
3 0 male 22.0 1 0 7.2500 S NaN
1 1 female 38.0 1 0 71.2833 C C
3 1 female 26.0 0 0 7.9250 S NaN
1 1 female 35.0 1 0 53.1000 S C
3 0 male 35.0 0 0 8.0500 S NaN
... ... ... ... ... ... ... ... ...
2 0 male 27.0 0 0 13.0000 S NaN
1 1 female 19.0 0 0 30.0000 S B
3 0 female NaN 1 2 23.4500 S NaN
1 1 male 26.0 0 0 30.0000 C C
3 0 male 32.0 0 0 7.7500 Q NaN
891 rows × 8 columns
'''
# 매개변수 2 header - 기준 컬럼을 잡아주는 역할을 한다.
# csv로 값을 가져올때 csv파일은 모두가 행으로 이루어져 있다.
# 이 행중에서 어떤게 기준 컬럼으로 되냐에 따라서 가시적으로 필드를 보기에 용이할 수가있고, 아닐 수가 있다.
pd.read_csv('titanic.csv', header = 1)
'''
0 3 male 22.0 1 0.1 7.25 S Unnamed: 8
0 1 1 female 38.0 1 0 71.2833 C C
1 1 3 female 26.0 0 0 7.9250 S NaN
... ... ... ... ... ... ... ... ... ...
888 1 1 male 26.0 0 0 30.0000 C C
889 0 3 male 32.0 0 0 7.7500 Q NaN
890 rows × 9 columns
'''
pd.read_csv('titanic.csv', header = 0)
'''
survived pclass sex age sibsp parch fare embarked deck
0 0 3 male 22.0 1 0 7.2500 S NaN
1 1 1 female 38.0 1 0 71.2833 C C
... ... ... ... ... ... ... ... ... ...
889 1 1 male 26.0 0 0 30.0000 C C
890 0 3 male 32.0 0 0 7.7500 Q NaN
891 rows × 9 columns
'''
# header 값을 None으로 주게 될 수도 있다.
# 그럴 경우 자동적으로 0번째 행이 기준 컬럼이 되며
# 기준컬럼 위에는 컬럼 인덱스 넘버가 생성된다.
# 매개변수 3 names - 기준 컬럼의 값을 변경해준다.
# 주의점은 기준 컬럼의 갯수와 지정해주고자 하는 names의 elements의 갯수가 일치해야한다.
pd.read_csv('titanic.csv', header = 0,
names = ['alive', 'class', 'gender', 'age', 'sibsp', 'parch', 'price', 'emb', 'deck'])
'''
alive class gender age sibsp parch price emb deck
0 0 3 male 22.0 1 0 7.2500 S NaN
1 1 1 female 38.0 1 0 71.2833 C C
... ... ... ... ... ... ... ... ... ...
889 1 1 male 26.0 0 0 30.0000 C C
890 0 3 male 32.0 0 0 7.7500 Q NaN
891 rows × 9 columns
'''
# 매개변수 4 usecols - 전체가 아닌 일부 컬럼만 호출할 때
# 주의점은 usecols를 작성할때 반드시 리스트 형태로 만들어서 입력해야한다.
# 한개를 하든, 기준 컬럼의 갯수만큼이든.
# 그렇지 않으면 에러가 난다.
pd.read_csv('titanic.csv', usecols = ['fare', 'survived'])
'''
survived fare
0 0 7.2500
1 1 71.2833
... ... ...
889 1 30.0000
890 0 7.7500
891 rows × 2 columns
'''
# 보다시피 기준 컬럼의 순서와 다르게 섞어서 써줘도, 일치하는 기준컬럼의 순서대로 작성된다.
titanic = pd.read_csv('titanic.csv', header = 0, index_col='pclass', usecols = ['survived', 'pclass', 'sex', 'age'])
titanic
'''
survived sex age
pclass
3 0 male 22.0
1 1 female 38.0
... ... ... ...
1 1 male 26.0
3 0 male 32.0
891 rows × 3 columns
'''
# 만약 이미 설정된 컬럼명이 마음에 들지 않는다면 이렇게 바꾸어주면 된다.
# 주의점은 이것도 컬럼의 갯수와 일치해야한다.
titanic.columns = ['alive', 'gender', 'age']
# 기준 컬럼으로 잡히게 되어서 행 인덱스측면으로 빠지게 된 값의 이름을 바꾸어주고 싶으면 (기준 행 인덱스 이름 변경)
# 이것도 기준 행 인덱스의 수와 일치하게 입력을 해주어야 할것이다.
titanic.index.name = 'class'
titanic
'''
alive gender age
class
3 0 male 22.0
1 1 female 38.0
... ... ... ...
1 1 male 26.0
3 0 male 32.0
891 rows × 3 columns
'''
# Importing messy CSV Files
- 비 정형 데이터 읽어오고 가공하기
import pandas as pd
pd.read_csv('titanic_raw.csv')
'''
This is the Titanic Dataset.
It contains all passengers that were aboard the titanic when
the tragic disaster occured in the year 19 1 2
... ... ... ... ... ... ... ... ... ...
End of the Dataset NaN NaN NaN
Get more Datasets on Kaggle . com NaN NaN NaN
898 rows × 5 columns
'''
'''
기본적으로 titanic_raw.csv는 처음 서두에서 불필요한 내용과
끝 맺음에 두줄이 불필요한 내용이 있었다.
이를 방지하기위해 우선은 처음 불필요한 4줄과 마지막 불필요한 2줄을 없애줄 것이다.
먼저, 컬럼명으로 사용해 줄 리스트를 만들자.
'''
# 컬럼명으로 이용할 이름의 리스트
col_names = ['Survived', 'Class', 'Gender', 'Age', 'Sipsp', 'Parch', 'Fare', 'Emb', 'Deck']
# 1. 먼저 처음부터 시작하는 rows를 무시하고 싶다면 skiprows를 해줘도 되고 header를 해줘도 된다.
# 2. 다음으로는 마지막에서 시작하는 rows를 무시하고 싶다면 skipfooter를 사용한다.
# 3. skiprows로 첫번째로 부터 시작하는 열을 무시하고 header = None을 해주게 되면 컬럼 인덱스가 생성된다.
# 이것을 추후에 변경해도 되고, 아니면 header = None 없이 바로 이렇게 바꿔줘도 된다.
titanic = pd.read_csv('titanic_raw.csv', skiprows=3, skipfooter=2, names = col_names)
titanic
'''
Survived Class Gender Age Sipsp Parch Fare Emb Deck
0 0 3 male 22.0 1 0 $7.25 S NaN
1 1 1 female 38.0 1 0 $71.2833 C C
... ... ... ... ... ... ... ... ... ...
892 0 3 male 34.0 1 1 $14.4 S NaN
893 0 3 male 36.0 0 0 $7.8958 S NaN
894 rows × 9 columns
'''
# 현재 경로에 정형화 된 데이터 csv파일 생성해주기
# 반드시 index = False를 해주어야 한다.
# 그래야만 rangeindex에 대해서 행 인덱스가 추가로 생성이 안된다.
# 무슨말이냐면 index = False를 안해주면 왼쪽 행 기준으로 인덱스 넘버가 두번씩 나온다고 보면 된다.
# rangeindex는 기본적으로 1개로 족하다.
titanic.to_csv('titanic_imp.csv', index = False)
pd.read_csv('titanic_imp.csv')
'''
Survived Class Gender Age Sipsp Parch Fare Emb Deck
0 0 3 male 22.0 1 0 $7.25 S NaN
1 1 1 female 38.0 1 0 $71.2833 C C
... ... ... ... ... ... ... ... ... ...
892 0 3 male 34.0 1 1 $14.4 S NaN
893 0 3 male 36.0 0 0 $7.8958 S NaN
894 rows × 9 columns
'''
300x250
'개발일지 > Pandas' 카테고리의 다른 글
Pandas importerror: lxml not found, please install it (0) | 2022.07.28 |
---|---|
pandas 판다스 기초 14 import excel (0) | 2022.07.27 |
pandas 틀린부분 복기 6 matplotlib (0) | 2022.07.26 |
pandas 판다스 기초 12 Matplotlib (0) | 2022.07.26 |
pandas 틀린부분 복기 5 apply, value_counts (0) | 2022.07.25 |