import pandas as pd # pandas 불러오기
s1 = pd.Series([10, 20, 30, 40, 50]) # s=pd.Series(seq_data)로 데이터 생성
s1 # 1열은 index, 2열은 values(값)
0 10 1 20 2 30 3 40 4 50 dtype: int64
s1.index # series데이터에서 index가져오기
RangeIndex(start=0, stop=5, step=1)
s1.values # series데이터에서 values가져오기
array([10, 20, 30, 40, 50], dtype=int64)
s2 = pd.Series(['a', 'b', 'c', 1, 2, 3]) # numpy의 경우 배열의 모든 데이터 타입이 같아야하지만
# pandas에서는 문자와 숫자 혼합된 리스트 가능
s2
0 a 1 b 2 c 3 1 4 2 5 3 dtype: object
import numpy as np # 데이터가 없으면 NumPy 불러온 후
s3 = pd.Series([np.nan,10,30]) # np.nan으로 데이터 없다고 표시 - 자리(index)는 있지만, 실제값은 없는 상황
s3
0 NaN 1 10.0 2 30.0 dtype: float64
index_date = ['2018-10-07','2018-10-08','2018-10-09','2018-10-10']
s4 = pd.Series([200, 195, np.nan, 205], index = index_date) # s=pd.Series(seq_data, index=index_seq)
# seq_data의 항목개수와 index_seq의 항목개수가 같아야 함
s4
2018-10-07 200.0 2018-10-08 195.0 2018-10-09 NaN 2018-10-10 205.0 dtype: float64
s5 = pd.Series({'국어': 100, '영어': 95, '수학': 90}) # 파이썬의 딕셔너리 이용해 데이터와 index 함께 입력가능
# s=pd.Series(dict_data)
s5
국어 100 영어 95 수학 90 dtype: int64
import pandas as pd
pd.date_range(start='2019-01-01',end='2019-01-07') # pd.date_range(시작, 끝, 기간, 주기)
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04', '2019-01-05', '2019-01-06', '2019-01-07'], dtype='datetime64[ns]', freq='D')
pd.date_range(start='2019-01-01',periods=10, freq='H') # 1시간 주기로 10개 시간 생성
DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 01:00:00', '2019-01-01 02:00:00', '2019-01-01 03:00:00', '2019-01-01 04:00:00', '2019-01-01 05:00:00', '2019-01-01 06:00:00', '2019-01-01 07:00:00', '2019-01-01 08:00:00', '2019-01-01 09:00:00'], dtype='datetime64[ns]', freq='H')
import pandas as pd
pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # DataFrame의 데이터 생성
# pd.DataFrame([[리스트1], [리스트2], [리스트3]])
0 | 1 | 2 | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 |
2 | 7 | 8 | 9 |
import numpy as np
import pandas as pd
data_list = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
pd.DataFrame(data_list)
0 | 1 | 2 | |
---|---|---|---|
0 | 10 | 20 | 30 |
1 | 40 | 50 | 60 |
2 | 70 | 80 | 90 |
import numpy as np
import pandas as pd
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8 ,9], [10, 11, 12]]) # values 설정
index_date = pd.date_range('2019-09-01', periods=4) # ndex 설정
columns_list = ['A', 'B', 'C'] # columns 설정
pd.DataFrame(data, index=index_date, columns=columns_list) # pd.DataFrame(data, index=index_date, columns=columns_data)
A | B | C | |
---|---|---|---|
2019-09-01 | 1 | 2 | 3 |
2019-09-02 | 4 | 5 | 6 |
2019-09-03 | 7 | 8 | 9 |
2019-09-04 | 10 | 11 | 12 |
table_data = {'연도': [2015, 2016, 2016, 2017, 2017], # 딕셔너리 타입의 데이터 생성
'지사': ['한국', '한국', '미국', '한국','미국'],
'고객 수': [200, 250, 450, 300, 500]}
table_data
{'연도': [2015, 2016, 2016, 2017, 2017], '지사': ['한국', '한국', '미국', '한국', '미국'], '고객 수': [200, 250, 450, 300, 500]}
pd.DataFrame(table_data) #딕셔너리 데이터 이용해 DataFrame 생성
#딕셔너리는 키에 따라 자동정렬 되므로 한글은 가나다순, 영어는 알파벳순 정렬
연도 | 지사 | 고객 수 | |
---|---|---|---|
0 | 2015 | 한국 | 200 |
1 | 2016 | 한국 | 250 |
2 | 2016 | 미국 | 450 |
3 | 2017 | 한국 | 300 |
4 | 2017 | 미국 | 500 |
df = pd.DataFrame(table_data, columns=['연도', '지사', '고객 수']) # columns=columns_list 이용해 데이터 정렬 순서 변경
df
연도 | 지사 | 고객 수 | |
---|---|---|---|
0 | 2015 | 한국 | 200 |
1 | 2016 | 한국 | 250 |
2 | 2016 | 미국 | 450 |
3 | 2017 | 한국 | 300 |
4 | 2017 | 미국 | 500 |
df.index # index 확인하기
RangeIndex(start=0, stop=5, step=1)
df.columns # columns 확인하기
Index(['연도', '지사', '고객 수'], dtype='object')
df.values # values 확인하기
array([[2015, '한국', 200], [2016, '한국', 250], [2016, '미국', 450], [2017, '한국', 300], [2017, '미국', 500]], dtype=object)
s3 = pd.Series([1, 2, 3, 4]) # 리스트와 NumPy와는 달리 pandas의 데이터끼리는 크기가 달라도 연산 가능
s4 = pd.Series([10, 20, 30, 40, 50]) # 연산할 수 없는 부분은 NaN으로 표시
s3+s4
0 11.0 1 22.0 2 33.0 3 44.0 4 NaN dtype: float64
s4-s3
0 9.0 1 18.0 2 27.0 3 36.0 4 NaN dtype: float64
s3*s4
0 10.0 1 40.0 2 90.0 3 160.0 4 NaN dtype: float64
s4/s3
0 10.0 1 10.0 2 10.0 3 10.0 4 NaN dtype: float64
table_data1 = {'A': [1,2,3,4,5], # DataFrame 데이터 df1 생성
'B': [10,20,30,40,50],
'C': [100,200,300,400,500]}
df1 = pd.DataFrame(table_data1)
df1
A | B | C | |
---|---|---|---|
0 | 1 | 10 | 100 |
1 | 2 | 20 | 200 |
2 | 3 | 30 | 300 |
3 | 4 | 40 | 400 |
4 | 5 | 50 | 500 |
table_data2 = {'A': [6, 7, 8], # DataFrame 데이터 df2 생성
'B': [60, 70, 80],
'C': [600, 700, 800]}
df2 = pd.DataFrame(table_data2)
df2
A | B | C | |
---|---|---|---|
0 | 6 | 60 | 600 |
1 | 7 | 70 | 700 |
2 | 8 | 80 | 800 |
df1 + df2 # 두 데이터의 길이가 같지 않아도 연산가능
# 연산할 수 없는 부분은 NaN으로 표시
A | B | C | |
---|---|---|---|
0 | 7.0 | 70.0 | 700.0 |
1 | 9.0 | 90.0 | 900.0 |
2 | 11.0 | 110.0 | 1100.0 |
3 | NaN | NaN | NaN |
4 | NaN | NaN | NaN |
table_data3 = {'봄': [256.5, 264.3, 215.9, 223.2, 312.8], # DataFrame 데이터 생성
'여름': [770.6, 567.5, 599.8, 387.1, 446.2],
'가을': [363.5, 231.2, 293.1, 247.7, 381.6],
'겨울': [139.3, 59.9, 76.9, 109.1, 108.1]}
columns_list = ['봄', '여름', '가을', '겨울']
index_list = ['2012', '2013', '2014', '2015', '2016']
df3 = pd.DataFrame(table_data3, columns = columns_list, index = index_list)
df3
봄 | 여름 | 가을 | 겨울 | |
---|---|---|---|---|
2012 | 256.5 | 770.6 | 363.5 | 139.3 |
2013 | 264.3 | 567.5 | 231.2 | 59.9 |
2014 | 215.9 | 599.8 | 293.1 | 76.9 |
2015 | 223.2 | 387.1 | 247.7 | 109.1 |
2016 | 312.8 | 446.2 | 381.6 | 108.1 |
df3.mean() # 계절별 평균
# axis 설정안했으므로 0 (열별 계산)
봄 254.54 여름 554.24 가을 303.42 겨울 98.66 dtype: float64
df3.mean(axis=1) # 연도별 평균
# mean()과 std()는 연산의 방향을 설정하기 위해 axis인자 추가
# axis=0 이면 열별 계산
# axis=1 이면 행별로 연산
# axis 설정안하면 기본값 0 (열별 계산)
2012 382.475 2013 280.725 2014 296.425 2015 241.775 2016 312.175 dtype: float64
df3.describe() # 평균,표준편차,최소,최대를 한번에 구함
봄 | 여름 | 가을 | 겨울 | |
---|---|---|---|---|
count | 5.000000 | 5.000000 | 5.000000 | 5.000000 |
mean | 254.540000 | 554.240000 | 303.420000 | 98.660000 |
std | 38.628267 | 148.888895 | 67.358496 | 30.925523 |
min | 215.900000 | 387.100000 | 231.200000 | 59.900000 |
25% | 223.200000 | 446.200000 | 247.700000 | 76.900000 |
50% | 256.500000 | 567.500000 | 293.100000 | 108.100000 |
75% | 264.300000 | 599.800000 | 363.500000 | 109.100000 |
max | 312.800000 | 770.600000 | 381.600000 | 139.300000 |
import pandas as pd # DataFrame 데이터 생성
import numpy as np
KTX_data = {'경부선 KTX': [39060, 39896, 42005, 43621, 41702, 41266, 32427],
'호남선 KTX': [7313, 6967, 6873, 6626, 8675, 10622, 9228],
'경전선 KTX': [3627, 4168, 4088, 4424, 4606, 4984, 5570],
'전라선 KTX': [309, 1771, 1954, 2244, 3146, 3945, 5766],
'동해선 KTX': [np.nan,np.nan, np.nan, np.nan, 2395, 3786, 6667]}
col_list = ['경부선 KTX','호남선 KTX','경전선 KTX','전라선 KTX','동해선 KTX']
index_list = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
df_KTX = pd.DataFrame(KTX_data, columns = col_list, index = index_list)
df_KTX
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2011 | 39060 | 7313 | 3627 | 309 | NaN |
2012 | 39896 | 6967 | 4168 | 1771 | NaN |
2013 | 42005 | 6873 | 4088 | 1954 | NaN |
2014 | 43621 | 6626 | 4424 | 2244 | NaN |
2015 | 41702 | 8675 | 4606 | 3146 | 2395.0 |
2016 | 41266 | 10622 | 4984 | 3945 | 3786.0 |
2017 | 32427 | 9228 | 5570 | 5766 | 6667.0 |
df_KTX.head() # DataFramen_data.head(n)에서 처음 n개의 행 데이터를 반환 (기본값 5)
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2011 | 39060 | 7313 | 3627 | 309 | NaN |
2012 | 39896 | 6967 | 4168 | 1771 | NaN |
2013 | 42005 | 6873 | 4088 | 1954 | NaN |
2014 | 43621 | 6626 | 4424 | 2244 | NaN |
2015 | 41702 | 8675 | 4606 | 3146 | 2395.0 |
df_KTX.tail() # DataFrame_data.tail(n)에서 마지막 n개의 행 데이터를 반환 (기본값 5)
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2013 | 42005 | 6873 | 4088 | 1954 | NaN |
2014 | 43621 | 6626 | 4424 | 2244 | NaN |
2015 | 41702 | 8675 | 4606 | 3146 | 2395.0 |
2016 | 41266 | 10622 | 4984 | 3945 | 3786.0 |
2017 | 32427 | 9228 | 5570 | 5766 | 6667.0 |
df_KTX[1:2] # DataFrame_data[행 시작위치 : 행 끝위치]
# 1행에 위치한 행 데이터 선택
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2012 | 39896 | 6967 | 4168 | 1771 | NaN |
df_KTX[2:5] # 2행에서 4행까지 행 데이터 선택
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2013 | 42005 | 6873 | 4088 | 1954 | NaN |
2014 | 43621 | 6626 | 4424 | 2244 | NaN |
2015 | 41702 | 8675 | 4606 | 3146 | 2395.0 |
df_KTX.loc['2011'] # 2011년 데이터만 선택
# DataFrame_data.loc[인덱스 이름]
경부선 KTX 39060.0 호남선 KTX 7313.0 경전선 KTX 3627.0 전라선 KTX 309.0 동해선 KTX NaN Name: 2011, dtype: float64
df_KTX.loc['2013':'2016'] # DataFrame_data.loc[시작할 인덱스이름 : 마지막 인덱스 이름]
# 2013년 부터 2016년까지 행 데이터 선택
경부선 KTX | 호남선 KTX | 경전선 KTX | 전라선 KTX | 동해선 KTX | |
---|---|---|---|---|---|
2013 | 42005 | 6873 | 4088 | 1954 | NaN |
2014 | 43621 | 6626 | 4424 | 2244 | NaN |
2015 | 41702 | 8675 | 4606 | 3146 | 2395.0 |
2016 | 41266 | 10622 | 4984 | 3945 | 3786.0 |
df_KTX['경부선 KTX'] # DataFrame_data[칼럼 이름]
# '경부선 KTX'의 열 데이터만 선택
2011 39060 2012 39896 2013 42005 2014 43621 2015 41702 2016 41266 2017 32427 Name: 경부선 KTX, dtype: int64
df_KTX['경부선 KTX']['2012':'2014'] # DataFrame_data[칼럼 이름][시작 인덱스 이름 : 끝 인덱스 이름]
# '경부선 KTX'열을 선택한 후, 2012년~2014년 데이터 선택
2012 39896 2013 42005 2014 43621 Name: 경부선 KTX, dtype: int64
df_KTX['경부선 KTX'][2:5] # DataFrame_data[칼럼 이름][시작 인덱스 위치 : 끝 인덱스 위치]
# '경부선 KTX'열을 선택한 후, 2행~4행 선택
2013 42005 2014 43621 2015 41702 Name: 경부선 KTX, dtype: int64
df_KTX.loc['2016']['호남선 KTX'] #[ 인덱스이름][열이름]
10622.0
df_KTX.loc['2016','호남선 KTX'] # [인덱스이름, 열이름]
10622
df_KTX['호남선 KTX']['2016'] # [열이름][인텍스이름]
10622
df_KTX['호남선 KTX'][5] # [열이름][인덱스위치]
10622
df_KTX['호남선 KTX'].loc['2016'] # [열이름].loc[인덱스이름]
10622
df_KTX.T # DataFrame_data.T
2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | |
---|---|---|---|---|---|---|---|
경부선 KTX | 39060.0 | 39896.0 | 42005.0 | 43621.0 | 41702.0 | 41266.0 | 32427.0 |
호남선 KTX | 7313.0 | 6967.0 | 6873.0 | 6626.0 | 8675.0 | 10622.0 | 9228.0 |
경전선 KTX | 3627.0 | 4168.0 | 4088.0 | 4424.0 | 4606.0 | 4984.0 | 5570.0 |
전라선 KTX | 309.0 | 1771.0 | 1954.0 | 2244.0 | 3146.0 | 3945.0 | 5766.0 |
동해선 KTX | NaN | NaN | NaN | NaN | 2395.0 | 3786.0 | 6667.0 |
df_KTX[['동해선 KTX', '전라선 KTX', '경전선 KTX', '호남선 KTX', '경부선 KTX']] #데이터변수 df_KTX에 지정
동해선 KTX | 전라선 KTX | 경전선 KTX | 호남선 KTX | 경부선 KTX | |
---|---|---|---|---|---|
2011 | NaN | 309 | 3627 | 7313 | 39060 |
2012 | NaN | 1771 | 4168 | 6967 | 39896 |
2013 | NaN | 1954 | 4088 | 6873 | 42005 |
2014 | NaN | 2244 | 4424 | 6626 | 43621 |
2015 | 2395.0 | 3146 | 4606 | 8675 | 41702 |
2016 | 3786.0 | 3945 | 4984 | 10622 | 41266 |
2017 | 6667.0 | 5766 | 5570 | 9228 | 32427 |
import pandas as pd # 두 학급의 시험 점수 dataframe 데이터 df1 생성
import numpy as np
df1 = pd.DataFrame({'Class1': [95, 92, 98, 100],
'Class2': [91, 93, 97, 99]})
df1
Class1 | Class2 | |
---|---|---|
0 | 95 | 91 |
1 | 92 | 93 |
2 | 98 | 97 |
3 | 100 | 99 |
df2 = pd.DataFrame({'Class1': [87, 89], # 2명이 전학와서 DataFrame 데이터 df2 추가
'Class2': [85, 90]})
df2
Class1 | Class2 | |
---|---|---|
0 | 87 | 85 |
1 | 89 | 90 |
df1.append(df2) # df1에 df2추가
# DataFrame_data1.append(Dataframe_data2, ignore_index=True)
# ignore_index=True 입력하지 않아, 기존 index와 같음
Class1 | Class2 | |
---|---|---|
0 | 95 | 91 |
1 | 92 | 93 |
2 | 98 | 97 |
3 | 100 | 99 |
0 | 87 | 85 |
1 | 89 | 90 |
df1.append(df2, ignore_index=True) # ignore_index=True 입력해서 index가 데이터 순으로 변경
Class1 | Class2 | |
---|---|---|
0 | 95 | 91 |
1 | 92 | 93 |
2 | 98 | 97 |
3 | 100 | 99 |
4 | 87 | 85 |
5 | 89 | 90 |
df3 = pd.DataFrame({'Class1': [96, 83]}) # 열이 하나만 있는 dataframe df3 생성
df3
Class1 | |
---|---|
0 | 96 |
1 | 83 |
df2.append(df3, ignore_index=True) # 열이 두개인 df2에 df3추가하면 데이터 없는 곳은 NaN
Class1 | Class2 | |
---|---|---|
0 | 87 | 85.0 |
1 | 89 | 90.0 |
2 | 96 | NaN |
3 | 83 | NaN |
df1
Class1 | Class2 | |
---|---|---|
0 | 95 | 91 |
1 | 92 | 93 |
2 | 98 | 97 |
3 | 100 | 99 |
df4 = pd.DataFrame({'Class3': [93, 91, 95, 98]}) # df1과 index방향으로 크기가 같은 DataFrame 데이터 생성
df4
Class3 | |
---|---|
0 | 93 |
1 | 91 |
2 | 95 |
3 | 98 |
df1.join(df4) # df1에 df4를 가로방향으로 추가
# DataFrame_data1.join(DataFrame_data2)
Class1 | Class2 | Class3 | |
---|---|---|---|
0 | 95 | 91 | 93 |
1 | 92 | 93 | 91 |
2 | 98 | 97 | 95 |
3 | 100 | 99 | 98 |
df5 = pd.DataFrame({'Class4': [82, 92]}) # index크기가 2인 dataframe 데이터 df5 생성
df5
Class4 | |
---|---|
0 | 82 |
1 | 92 |
df1.join(df5) # index크기가 2인 df5를 index크기가 4인 df1에 추가
# index 크기가 다른 dataframe 데이터를 join()으로 추가한다면 데이터 없는 부분은 Nan
Class1 | Class2 | Class4 | |
---|---|---|---|
0 | 95 | 91 | 82.0 |
1 | 92 | 93 | 92.0 |
2 | 98 | 97 | NaN |
3 | 100 | 99 | NaN |
index_label = ['a','b','c','d']
df1a = pd.DataFrame({'Class1': [95, 92, 98, 100],
'Class2': [91, 93, 97, 99]}, index= index_label)
df4a = pd.DataFrame({'Class3': [93, 91, 95, 98]}, index=index_label)
df1a.join(df4a)
Class1 | Class2 | Class3 | |
---|---|---|---|
a | 95 | 91 | 93 |
b | 92 | 93 | 91 |
c | 98 | 97 | 95 |
d | 100 | 99 | 98 |
df_A_B = pd.DataFrame({'판매월': ['1월', '2월', '3월', '4월'], # 1월~4월까지 제품 A,B의 판매량 데이터 df_A_B 생성
'제품A': [100, 150, 200, 130],
'제품B': [90, 110, 140, 170]})
df_A_B
판매월 | 제품A | 제품B | |
---|---|---|---|
0 | 1월 | 100 | 90 |
1 | 2월 | 150 | 110 |
2 | 3월 | 200 | 140 |
3 | 4월 | 130 | 170 |
df_C_D = pd.DataFrame({'판매월': ['1월', '2월', '3월', '4월'], # 1월~4월까지 제품 C,D의 판매량 데이터 df_C_D 생성
'제품C': [112, 141, 203, 134],
'제품D': [90, 110, 140, 170]})
df_C_D
판매월 | 제품C | 제품D | |
---|---|---|---|
0 | 1월 | 112 | 90 |
1 | 2월 | 141 | 110 |
2 | 3월 | 203 | 140 |
3 | 4월 | 134 | 170 |
df_A_B.merge(df_C_D) # df_A_B와 df_C_D에 모두 있는 것이 '판매월'열이니 '판매월'중심으로 데이터 통합
# DataFrame_left_data.merge(DataFrame_right_data)
판매월 | 제품A | 제품B | 제품C | 제품D | |
---|---|---|---|---|---|
0 | 1월 | 100 | 90 | 112 | 90 |
1 | 2월 | 150 | 110 | 141 | 110 |
2 | 3월 | 200 | 140 | 203 | 140 |
3 | 4월 | 130 | 170 | 134 | 170 |
df_left = pd.DataFrame({'key':['A','B','C'], 'left': [1, 2, 3]}) # DataFrame 데이터 생성
df_left
key | left | |
---|---|---|
0 | A | 1 |
1 | B | 2 |
2 | C | 3 |
df_right = pd.DataFrame({'key':['A','B','D'], 'right': [4, 5, 6]}) # DataFrame 데이터 생성
df_right
key | right | |
---|---|---|
0 | A | 4 |
1 | B | 5 |
2 | D | 6 |
df_left.merge(df_right, how='left', on = 'key')
# DataFrame_left_data.merge(DataFrame_right_data, how='merge_method', on='key_label')
# 'key label'(열)은 통합하려는 기준
# 'key label'입력안하면 공통적으로 포함된 열이 선택됨
key | left | right | |
---|---|---|---|
0 | A | 1 | 4.0 |
1 | B | 2 | 5.0 |
2 | C | 3 | NaN |
df_left.merge(df_right, how='right', on = 'key')
key | left | right | |
---|---|---|---|
0 | A | 1.0 | 4 |
1 | B | 2.0 | 5 |
2 | D | NaN | 6 |
df_left.merge(df_right, how='outer', on = 'key') # 지정된 열 기준으로 모두 선택 #데이터가 없으면 NaN
key | left | right | |
---|---|---|---|
0 | A | 1.0 | 4.0 |
1 | B | 2.0 | 5.0 |
2 | C | 3.0 | NaN |
3 | D | NaN | 6.0 |
df_left.merge(df_right, how='inner', on = 'key') # 지정된 열 기준으로 공통된 거만 선택(기본값)
key | left | right | |
---|---|---|---|
0 | A | 1 | 4 |
1 | B | 2 | 5 |
%%writefile C:\myPyCode\data\sea_rain1.csv # csv 데이터 파일 (sea_rain1.csv) 생성
연도,동해,남해,서해,전체
1996,17.4629,17.2288,14.436,15.9067
1997,17.4116,17.4092,14.8248,16.1526
1998,17.5944,18.011,15.2512,16.6044
1999,18.1495,18.3175,14.8979,16.6284
2000,17.9288,18.1766,15.0504,16.6178
UsageError: unrecognized arguments: # csv 데이터 파일 (sea_rain1.csv) 생성
import pandas as pd # pandas의 read_csv임
pd.read_csv('C:\myPyCode\data\sea_rain1.csv ') # pd.read_csv(파일이름)
# read_csv로 csv파일 읽어오기
연도 | 동해 | 남해 | 서해 | 전체 | |
---|---|---|---|---|---|
0 | 1996 | 17.4629 | 17.2288 | 14.4360 | 15.9067 |
1 | 1997 | 17.4116 | 17.4092 | 14.8248 | 16.1526 |
2 | 1998 | 17.5944 | 18.0110 | 15.2512 | 16.6044 |
3 | 1999 | 18.1495 | 18.3175 | 14.8979 | 16.6284 |
4 | 2000 | 17.9288 | 18.1766 | 15.0504 | 16.6178 |
pd.read_csv('C:/myPyCode/data/sea_rain1_from_notepad.csv', encoding = "cp949") # 메모장파일 불러올 때는 (encoding = "cp949") 추가
연도 | 동해 | 남해 | 서해 | 전체 | |
---|---|---|---|---|---|
0 | 1996 | 17.4629 | 17.2288 | 14.4360 | 15.9067 |
1 | 1997 | 17.4116 | 17.4092 | 14.8248 | 16.1526 |
2 | 1998 | 17.5944 | 18.0110 | 15.2512 | 16.6044 |
3 | 1999 | 18.1495 | 18.3175 | 14.8979 | 16.6284 |
4 | 2000 | 17.9288 | 18.1766 | 15.0504 | 16.6178 |
%%writefile C:\myPyCode\data\sea_rain1_space.txt # 콤마가 아닌 공백(빈칸)으로 구분되어 있음
연도 동해 남해 서해 전체
1996 17.4629 17.2288 14.436 15.9067
1997 17.4116 17.4092 14.8248 16.1526
1998 17.5944 18.011 15.2512 16.6044
1999 18.1495 18.3175 14.8979 16.6284
2000 17.9288 18.1766 15.0504 16.6178
UsageError: unrecognized arguments: # 콤마가 아닌 공백(빈칸)으로 구분되어 있음
pd.read_csv('C:/myPyCode/data/sea_rain1_space.txt', sep=" ") # 데이터 필드가 공백으로 구분되있으면 (sep=' ')추가해서 구분자 공백표현
연도 | 동해 | 남해 | 서해 | 전체 | |
---|---|---|---|---|---|
0 | 1996 | 17.4629 | 17.2288 | 14.4360 | 15.9067 |
1 | 1997 | 17.4116 | 17.4092 | 14.8248 | 16.1526 |
2 | 1998 | 17.5944 | 18.0110 | 15.2512 | 16.6044 |
3 | 1999 | 18.1495 | 18.3175 | 14.8979 | 16.6284 |
4 | 2000 | 17.9288 | 18.1766 | 15.0504 | 16.6178 |
pd.read_csv('C:/myPyCode/data/sea_rain1.csv', index_col="연도" ) # 자동 생성된 인덱스이름이 싫으면 (index_col=열이름)으로 변경
동해 | 남해 | 서해 | 전체 | |
---|---|---|---|---|
연도 | ||||
1996 | 17.4629 | 17.2288 | 14.4360 | 15.9067 |
1997 | 17.4116 | 17.4092 | 14.8248 | 16.1526 |
1998 | 17.5944 | 18.0110 | 15.2512 | 16.6044 |
1999 | 18.1495 | 18.3175 | 14.8979 | 16.6284 |
2000 | 17.9288 | 18.1766 | 15.0504 | 16.6178 |
df_WH = pd.DataFrame({'Weight':[62, 67, 55, 74], #D ataFrame 데이터 생성
'Height':[165, 177, 160, 180]},
index=['ID_1', 'ID_2', 'ID_3', 'ID_4'])
df_WH.index.name = 'User' # index에 이름을 추가하려면 (df.index.name=문자열)
df_WH
Weight | Height | |
---|---|---|
User | ||
ID_1 | 62 | 165 |
ID_2 | 67 | 177 |
ID_3 | 55 | 160 |
ID_4 | 74 | 180 |
bmi = df_WH['Weight']/(df_WH['Height']/100)**2 # 체질량 지수 데이터 추가
bmi
User ID_1 22.773186 ID_2 21.385936 ID_3 21.484375 ID_4 22.839506 dtype: float64
df_WH['BMI'] = bmi # df['열 이름']=column_data로 새로운 열 추가
df_WH
Weight | Height | BMI | |
---|---|---|---|
User | |||
ID_1 | 62 | 165 | 22.773186 |
ID_2 | 67 | 177 | 21.385936 |
ID_3 | 55 | 160 | 21.484375 |
ID_4 | 74 | 180 | 22.839506 |
df_WH.to_csv('C:/myPyCode/data/save_DataFrame.csv') # DataFrame 데이터 df_WH를 csv파일로 저장
!type C:\myPyCode\data\save_DataFrame.csv # DataFrame 데이터가 csv 파일로 잘 저장됬는지 텍스트파일로 확인하기
User,Weight,Height,BMI ID_1,62,165,22.77318640955005 ID_2,67,177,21.38593635289987 ID_3,55,160,21.484374999999996 ID_4,74,180,22.839506172839506
C:\myPyCode\data\save_DataFrame.csv 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: #. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: DataFrame. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 데이터가. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: csv. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 파일로. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 잘. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 저장됬는지. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 텍스트파일로. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 확인하기.
df_pr = pd.DataFrame({'판매가격':[2000, 3000, 5000, 10000], # 판매가격과 판매량 dataframe 생성
'판매량':[32, 53, 40, 25]},
index=['P1001', 'P1002', 'P1003', 'P1004'])
df_pr.index.name = '제품번호'
df_pr
판매가격 | 판매량 | |
---|---|---|
제품번호 | ||
P1001 | 2000 | 32 |
P1002 | 3000 | 53 |
P1003 | 5000 | 40 |
P1004 | 10000 | 25 |
file_name = 'C:/myPyCode/data/save_DataFrame_cp949.txt' #dataframe 데이터 df_pr을 텍스트파일로 저장
df_pr.to_csv(file_name, sep=" ", encoding = "cp949") #옵션으로 데이터필드는 공백으로 구분, 문자 인코딩은 cp949
!type C:\myPyCode\data\save_DataFrame_cp949.txt #저장된 파일 확인
제품번호 판매가격 판매량 P1001 2000 32 P1002 3000 53 P1003 5000 40 P1004 10000 25
C:\myPyCode\data\save_DataFrame_cp949.txt 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: #저장된. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 파일. 지정된 파일을 찾을 수 없습니다. 다음 내용 진행 중 오류 발생: 확인.