목록Python/Pandas (21)
군침이 싹 도는 코딩
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVAGRJ/btrR8ihkQXs/Mh9kcHxuK7EWKE8JND2rk0/img.jpg)
데이터프레임을 합치는 함수 컨캣과 멀지를 알아보자 컨캣은 컬럼 이름이 모두 같으면 갯수제한없이 데이터프레임을 하나로 합쳐준다 멀지는 두 데이터 프레임에 공통 컬럼이 있으면 그 컬럼을 기준으로 하나로 합쳐준다 멀지는 두개의 데이터 프레임만 합칠수 있다. 또한 멀지는 기준이되는 컬럼에 공통된 데이터만 가져온다. 컨캣으로 합치기 사용법 pd.concat([df1,df2,df3''''']) pd.concat([df1,df2]) pd.concat([df1,df2,df3]) # 3개의 데이터 프레임의 컬럼이 모두 같기때문에 컴캣으로 합쳐준다 멀지로 합치는법 사용법 pd.concat([df1,df2,on=기준이되는컬럼,how=left or right]) df_all=pd.concat([df_Engineering_de..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xxgYp/btrR4FxAaql/s0n2ExejnMSaH9tPx0VNGK/img.png)
데이터 프레임에서 특정 문자가 들어있는곳을 찾으려면 문자열 함수중에 contains를 사용하면 bool 로 보여준다 사용법 df[col].str.contains(찾을단어) reviews['description'].str.contains('tropical') >>> 0 True 1 False 2 False 3 False 4 False ... 129966 False 129967 False 129968 False 129969 False 129970 False Name: description, Length: 129971, dtype: bool
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ZJncY/btrR6edY1n1/CepJ4WLQp3uHlUkP7ZkC6k/img.png)
판다스에서 컬럼을 오름차순으로 정렬하는 법은 sort_values() 를 사용한다 내림차순으로 정렬하고싶다면 ascending=False를 써주면 된다. 사용법 데이터프레임.sort_values(정렬하고싶은 컬럼의 이름,ascending) # ascending 의 디폴트는 True (오름차순) 이며 False (내림차순) 이라고 입력하면 내림차순이 된다 # 정렬하고 싶은 컬럼이 복수일경우 리스트를 사용한다 # 각 컬럼별로 오름차순 내림차순을 따로 하고싶다면 어센딩도 리스트를 사용한다 ex) 데이터프레임.sort_values([컬럼1,컬럼2],ascending=[True,False]) 경력으로 오름차순 df.sort_values('Years of Experience') 경력으로 내림차순 df.sort_va..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cMDGB4/btrR2Hooqb8/NWbMu24NTZKu6ZLEzY470K/img.png)
이 데이터 프레임을 통해 어플라이의 기능들을 살펴보자 어플라이는 판다스안에 있는 데이터에 함수를 사용하고싶을때 쓴다 특히 파이썬의 함수가 아닌 def를 통해 만든 함수를 사용할때 유용하다 사용법 데이터 억세스.apply(쓰고싶은함수) # 이때 함수옆에 소괄호는 쓰지않는다 # 직원의 이름 글자수를 알아내어 length 라는 컬럼에 저장해보자 df['length']=df['Employee Name'].apply(len) # 직원 이름을 전부 대문자로바꿔서 upper_name 이라는 컬럼에 저장해보자 df['Employee Name'].apply(upper) >>> NameError: name 'upper' is not defined # 이때 어플라이를 사용하면 에러가 발생한다 이유는 어플라이는 파이썬의 함수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CDEuc/btrRY3L2fCa/I8g3HXCzjecoH5EEFwUH91/img.png)
해당 데이터프레임을 가지고 운용을 해보겠다 # 경력이 3년 이상인 사람의 데이터만 가져오시오 df.loc[df['Years of Experience']>=3,] # iloc로는 안된다 # loc를 이용해서 경력이 3년이상인 사람을 불러왔다 사용법은 loc[행 인덱싱값, 열 인덱싱값] # 경력이 3년이상인 사람의 이름과 시급정보를 가져오시오 df.loc[df['Years of Experience']>=3,'Employee Name':'Salary [$/h]'] # 경력이 4년이상 8년 이하인 사람의 데이터를 가져오시오 df.loc[(df['Years of Experience']>=4)& (df['Years of Experience']
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cpC68p/btrR2TnQMc3/0AYsrTmNsENPaJ7bFAsd4k/img.png)
카테고리컬 데이터란 같은 컬럼안에 중복된 데이터가 있는것을 말한다 해당 카테고리컬 데이터를 분석해보자 카테고리컬 데이터에서 칼럼 중복 제거 하는법 df['Year'].unique() # 중복 제거 >>> array([1990, 1991, 1992], dtype=int64) df['Year'].nunique() # 중복 제거후 갯수 >>> 3 # unique() 함수를 이용해 중복된 항목을 제거하고 보여준다. 제거후 갯수만 보고싶으면 앞에 n 을 붙여 nunique를 쓴다 숫자데이터의 통계를 확인하는법 # describe() 함수를 사용해 알수있다 여기서 표기되는것은 숫자데이터만이다 문자열에 describe() 함수를 사용할 경우 df['Name'].describe() >>> count 9 unique 3..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XWo2g/btrRX0PnlQl/DMj5KUrHPMXpczyHXhZKTK/img.png)
위 데이터 프레임으로 NaN 처리 방법을 알아보자 비어있는 데이터가 어디에 몇개가 있는지 알아보는법 df.isna().sum() >>> bikes 0 pants 0 watches 0 shirts 1 shoes 0 suits 1 glasses 1 dtype: int64 df.isna().sum().sum() >>> 3 # isna() 함수를 통해 비어 있는 데이터가 있는지 확인할수있다 그 후에 sum() 함수를 사용하면 컬럼별 비어있는 데이터 갯수를 알려주며 한번 더 사용하면 총합을 알려준다. 반대로 데이터가 있는곳을 물어볼수도있다 #이때는 notna() 를 사용 NaN 을 삭제하는법 # dropna() 함수를 사용해 비어 있는 데이터가 있는 행을 모두 삭제한다 특정값으로 채우는법 # fillna()함수를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dbX6bn/btrRY17bbkv/g9UPr5w4plkfLxYdMyZkL0/img.png)
csv 파일을 불러오는법 reviews=pd.read_csv('../data/winemag-data_first150k.csv',index_col=0) # index_col=0 은 unnamed:0라는 인덱스로 사용되던것이 컬럼 자리에 올라가 있는것을 없애주는것 데이터 프레임의 윗부분부터 보는법 reviews.head() # head() 라는 함수를 쓰며 안에 파라미터값을 넣으면 해당값만큼 아니면 5개를 디폴트로 보여준다 데이터 프레임의 뒷부분부터 보는법 reviews.tail() # tail() 라는 함수를 쓰며 안에 파라미터값을 넣으면 해당값만큼 아니면 5개를 디폴트로 보여준다 데이터 프레임의 숫자데이터의 통계를 보는법 reviews.describe() # count 는 비어있는 데이터를 제외한 갯수 ..