[파이썬] Pandas 기초
2021. 7. 25. 01:16ㆍ공부한 내용/파이썬 문법
data = { 'name' : ['AA', 'IBM', 'GOOG'],
'date' : ['2001-12-01', '2012-02-10', '2010-04-09'],
'shares' : [100, 30, 90],
'price' : [12.3, 10.3, 32.2]}
df = pd.DataFrame(data)
1. Adding Columns & Setting Indexes
df['owner'] = 'Unknown'
(2) 행 인덱스 이름 변경
df.index = ['one', 'two', 'three']
(3) 특정 열을 행 인덱스로 설정하기
df = df.set_index(['name'])
2. Accessing & Deleting Data
(1) 특정 요소에 접근
#한 열에서 여러 행들 접근
df.loc["AA":"GOOG"]
#특정 요소에 접근
df.loc["AA"]['shares']
(2) 열 삭제
del df['owner']
df.drop('shares', axis = 1)
3. Filtering & Sorting Data
elemep = pd.io.parsers.read_csv("elemapi2v2.csv")
(1) Filtering Data
#조건 1개
highapi00 = elemap[elemap['api00']>700]
#조건 여러개
api00eighties = elemap[(elemap['api00']>=800)&(elemap['api00']<900)]
(2) Sorting
#by column
elemap = elemap.sort_values('api00')
#by index
elemap = elemap.sort_index()
4. Null Values and String in Data
(1) Null Values
#null값 유무 확인
df.isnull()
df.notnull()
#null값을 다른 값으로 대체
df.fillna(a)
(2) String in Data
#정확히 일치
df[df['owner']=='Unknown']
#시작문자 일치
df[df['owner'].str.startswith("Unk")]
#포함문자 일치
df[df['owner'].str.contains("know")]
5. Counting and Groupby
(1) Counting
#unique한 값들이 몇 번 등장했는지 개수 집계
elemap['api00'].value_counts()
(2) Groupby
elemap.groupby(['collcat']).size()
#여러 열로 그룹화 가능
elemap.groupby(['collcat', 'mealcat']).size()
6. Index
(1) 인덱스 세팅
#인덱스 전체 이름 설정
c = elemap.set_index(['snum'])
#여러 인덱스 존재 시, 각 인덱스 전체 이름 설정
cm = elemap.set_index(['snum', 'enroll']).sort_index()
#인덱스 리셋
cm = cm.reset_index()
(2) Hierarchical Indexing
#여러 인덱스 생성
data = pd.Series([10, 20, 30, 40, 15, 25, 35, 25], index =
[['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
['obj1', 'obj2', 'obj3', 'obj4', 'obj1', 'obj2', 'obj3', 'obj4']])
#인덱스 나누기
data['b']
data[:, 'obj2']
#열 인덱싱
df = pd.DataFrame(np.arange(12).reshape(4, 3),
index = [['a', 'a', 'b', 'b'], ['one', 'two', 'three', 'four']],
columns = [['num1', 'num2', 'num3'], ['red', 'green', 'red']])
#인덱스 이름 짓기
df.index.names=['key1', 'key2']
df.columns.names=['n', 'color']
#인덱스 나누기
df['num1']
df.loc['a','num1']
df.loc[("a", "one"), "num1"]
#인덱스 레벨 바꾸기
df.swaplevel('key1', 'key2')
#인덱스로 졍렬
df.sort_index(level='key2')
#통계 요약
df.sum(level = 'key1')
df.sum(level = 'color', axis=1)
7. Merging
(1) Merge
df1 = pd.DataFrame({ 'key' : ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 'data1' : range(7)})
df2 = pd.DataFrame({ 'key' : ['a', 'b', 'd', 'b'], 'data2' : range(4)})
pd.merge(df1, df2)
#서로 다른 키로 병합
df1 = pd.DataFrame({ 'key1' : ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 'data1' : range(7)})
df2 = pd.DataFrame({ 'key2' : ['a', 'b', 'd', 'b'], 'data1' : range(4)})
pd.merge(df1, df2, left_on='key1', right_on='key2')
(2) Left Join, Right Join, Outer Join
pd.merge(df1, df2, left_on='key1', right_on='key2', how="left")
pd.merge(df1, df2, left_on='key1', right_on='key2', how="right")
pd.merge(df1, df2, left_on='key1', right_on='key2', how="outer")
(3) Concatenation
s1 = pd.Series([0, 1], index=['a', 'b'])
s2 = pd.Series([2, 1, 3], index=['c', 'd', 'e'])
s3 = pd.Series([4, 7], index=['a', 'e'])
pd.concat([s1, s2])
#axis 1로 join
pd.concat([s1, s2], axis=1)
pd.concat([s1, s2, s3], keys=['one', 'two', 'three'])
pd.concat([df1,df2])
pd.concat([df1, df2], join="inner")
8. Update
-존재하는 데이터프레임을 대응하는 데이터프레임에 업데이트(똑같은 인덱스와 열 이름을 갖고 있어야 함)
a = pd.Series(np.arange(len(elemap)+1),name="meals")
elemap.update(a)
9. Data Transformation
(1) 중복행 제거
df = pd.DataFrame({'k1':['one']*3 + ['two']*4, 'k2':[1,1,2,3,3,4,4]})
df.drop_duplicates()
df.drop_duplicates(['k1']) #k1열값 기준 중복행 제거
df.drop_duplicates(['k1', 'k2']) #k1, k2열값 기준 중복행 제거
(2) 값 교체
df.replace('one', 'One')
df.replace({'one':'One', 3:30})
'공부한 내용 > 파이썬 문법' 카테고리의 다른 글
[파이썬] mutable 객체와 immutable 객체의 차이 (0) | 2021.10.28 |
---|---|
[파이썬] Sympy 기초 (0) | 2021.07.24 |
[파이썬] Numpy 기초 (0) | 2021.07.24 |
[파이썬] Pandas - 데이터프레임 기초 및 응용 (0) | 2021.06.29 |
[파이썬] Numpy - 배열과 벡터 계산 (0) | 2021.06.27 |