ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Python> 오늘 공부한 코드 정리
    데이터 분석 공부 2020. 6. 5. 19:57

    #head()
    df.head()
    
    

     

    #window
    #sep = ';'
    df=pd.read_csv('C:/Users/bank-additional-full.csv',
                     engine='python',sep=';')
                     
    # 만약 , 로 구분되어 있다면
    df = pd.read_csv('./data.csv', sep = ',', engine = 'python')
    #오름차순 정렬
    #age칼럼 
    age=df['age'].sort_values()
    
    #내림차순
    age=df['age'].sort_values(ascending = False)
    
    #drop(axis=1) - 삭제(열 기준)
    age=age.drop('index',axis=1)
    
    #계급간 빈도를 나타내주는 히스토그램
    df['age'].plot.hist()
    plt.show()

     

     

     

    #히스토그램
    #bins - 계급구간(10,20,30...100)
    #figsize=[15,8]
    #xticks(fontsize=15)
    #yticks(fontsize=15)
    #plt.title('Histogram of df.age',fontsize=20)
    
    plt['age'].plot.hist(bins = range(1, 101, 10), figsize = [15,8])
    plt.xticks(fontsize = 15)
    plt.yticks(fontsize = 15)
    plt.title('Histogram of df.age', fontsize=  20)
    plt.show()
    

    #시각화 예제2 : duration(전화통화시간) 선 그래프 시각화
    (((df['duration'].sort_values()).reset_index()).drop('index',axis=1)).plot()
    plt.show()
    #1. 선그래프로 데이터의 패턴 분석
    #2. 히스토그램으로 전화통화 시간별 빈도 분석

     

     

     

    # 1. 가입여부에 따라 가입한 그룹과 가입하지 않은 그룹으로 나눈다.
    #가입여부에 대한 칼럼 : 'y'
    #unique()
    df['y'].unique()
    #groupby사용 - yes, no그룹으로 나뉘게 됨
    
    # 1. 가입여부에 따라 가입한 그룹과 가입하지 않은 그룹으로 나눈다.
    #groupby('y')
    grouped=df.groupby('y')
    
    # 1. 가입여부에 따라 가입한 그룹과 가입하지 않은 그룹으로 나눈다.
    #get_group('yes') - y칼럼이 'yes'인 데이터프레임 추출 - 가입한 그룹만 추출
    #get_group('no') - y칼럼이 'no'인 데이터프레임 추출 - 가입하지 않은 그룹만 추출
    yes_group=grouped.get_group('yes')
    no_group=grouped.get_group('no')
    
    # 1. 가입여부에 따라 가입한 그룹과 가입하지 않은 그룹으로 나눈다.
    #yes_group 출력
    yes_group.head()
    
    # 1-3. 가입여부에 따라 가입한 그룹과 가입하지 않은 그룹으로 나눈다.
    #no_group 출력
    no_group.head()
    
    
    

     

    re.sub() 함수는 문자열에서 매치된 텍스트를 다른 텍스트로 치환할 때 사용한다. 
    ‘sub’는 치환을 뜻하는 ‘substitution’의 줄임말이다. 패턴이 여러 번 매치하면 매치한 텍스트를 모두 치환한다.
    
    df['PD_NM'].apply(lambda x : re.sub('\[|\]','', x))

     

    #pd.pivot_table('데이터프레임 변수',values=집계 대상 칼럼, index=행 인덱스가 될 칼럼명, columns=열 인덱스가 될 칼럼명, aggfunc=sum)
    pd.pivot_table(df,values='age',index='y',columns='job',aggfunc='mean')
    
    

     

    #멀티 인덱스(multi-index) - 행 인덱스
    #['y','marital']
    pd.pivot_table(df,'age',['y','marital'],'job',aggfunc='mean')

     

    #yes행과 no행의 차 연산(loc인덱서 사용)
    pivot.loc['yes']-pivot.loc['no']
    

     

    #diff행 생성(yes행과 no행의 차)
    pivot.loc['diff']=pivot.loc['yes']-pivot.loc['no']

     

    # 첫 행 삭제
    df=pd.read_excel('./data.xls',skiprows=[0])

    # 하나의 행 제거 
    df=pd.read_excel('/Users/junghs/네이버보고서.xls',skiprows=[1])
    

    # 결측치 확인 - 열단위
    df.isnull().sum()
    
    # 결측치 확인 - 행단위
    df.isnull().sum(axis=1)

     

     

    # 클릭수 열에 round함수 적용
    clk=round(df['클릭수'],0)
    
    # 기존 칼럼데이터 대체
    df['클릭수']=clk.astype(int)
    df['클릭률(%)']=df['클릭수']/df['노출수']*100
    # 반드시 맨 뒤에 *100을 하여서 100을 곱해준다
    데이터 프레임을 Dict를 활용해서 간단하게 만드는 법
    dict_data={"철수":[1,2,3,4],"영희":[2,3,4,5],"민수":[3,4,5,6],"수진":[4,5,6,7]}
    data=DataFrame(dict_data)
    #철수 칼럼(데이터프레임의 열 = 시리즈 자료구조) 출력
    data['철수']

     

    #1. 95백분위수 찾기
    #quantile - 분위수 출력(default : 2사분위수(중앙값))
    imp.quantile()
    
    #median - 중앙값
    imp.median()
    
    #quantile(0) - 최소값
    print(imp.quantile(0))
    print(imp.min())
    
    #quantile(1) - 최대값
    print(imp.quantile(1))
    print(imp.max())
    
    #95백분위수 = quantile(0.95)
    imp.quantile(0.95)
    
    #2. 95백분위수 이상(상위 5%)의 노출수 추출
    #series[condition]
    imp=imp[imp>=imp.quantile(0.95)]
    
    
    #데이터프레임의 인덱스를 키워드로 변경
    #set_index('키워드')
    df_index=df.set_index('키워드')

     

     

    #count - 각 광고그룹 데이터의 개수
    grouped.count()
    
    #mean -각 광고그룹 데이터의 평균
    grouped.mean()
    
    #median - 그룹 데이터의 중앙값
    grouped.median()
    
    #std - 그룹 데이터의 표준편차
    grouped.std()
    
    #var - 그룹 데이터의 분산
    grouped.var()
    
    
Designed by Tistory.