パンダ匹


1.dicttypeオブジェクトがstring typeの場合dicttypeに変更
"""
Description:
	'{'a','b','c'}' -> {'a','b','c'}
"""
from ast import literal_eval
series.map(lambda x: literal_eval(x))
2.特定の文字列を含むキー値の検索
"""
Description:
	{'aaa':1, 'bbb':2, 'ccc':3} 에서 key값에 aaa를 포함한 키 값
"""
[k for k in dict.keys() if '문자열' in k]
3. series to list
"""
Description
  (AS-IS)
  df = pd.DataFrame({
      'column1' : [1,2,3],
      'column2' : ['a','b','c']
  })

  (TO-BE)
  ['a','b','c']
"""

df['column2'].to_list()
4.DataFrameからJSONへのフォーマット変換
1)方法1
インデックスはKey値、SeriesはValue
"""
Description:
  (AS-IS)
  df = pd.DataFrame({
      'column1' : [1,2,3],
      'column2' : ['a','b','c']
  })

  (TO-BE)
  {0: 'a', 1: 'b', 2: 'c'}
"""
dict(zip(df.index, df['column2']))
2)方法2
キー値をインデックスに設定すると、to dict()[必要な値]
df.set_index('column1').to_dict()['column2']
5)json文字列に変換
"""
Description:
	(AS-IS)
	{'id': 1, 'username': 'je', 'email': '[email protected]'}
    
    (TO-BE)
    '{"id": 1, "username": "je", "email": "[email protected]"}'
"""

import json
json_objects = {
    'id': 1,
    'username': 'je',
    'email': '[email protected]'
}

json.dumps(json_objects)
6)データフレームのインデックスをカラムにインポートする
"""
Description:
	(AS-IS)
    | column1 | column2 |
    |    1    |   'a'   |
    |    2    |   'b'   |
    |    3    |   'c'   |
    
    (TO-BE)
    | new_col | column1 | column2 |
    |    0    |    1    |   'a'   |
    |    1    |    2    |   'b'   |
    |    2    |    3    |   'c'   |
"""

df.reset_index().rename(columns={'index':'new_col'})
7)可視化時のハングル設定
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import rc, font_manager

for i in font_manager.fontManager.ttflist:
    print(i.name, i.fname)
    
font_fname = i.fname # 경로/글씨체.ttf
prop = font_manager.FontProperties(fname=font_fname)
mpl.rcParams['font.family'] = 'NanumGothic'
mpl.rcParams['axes.unicode_minus'] = False

# 세션 초기화
font_maager._rebuild()

plt.title('한글 테스트')
8)一部の列のNull値を持つ行を削除する
"""
Description:
	(AS-IS)
	| column1 | column2 |
    |    1    |         |
    |    2    |   'b'   |
    |    3    |   'c'   |
    
    (TO-BE)
    | column1 | column2 |
    |    2    |   'b'   |
    |    3    |   'c'   |
"""

df_null = pd.DataFrame({
    'column1' : [1,2,3],
    'column2' : ['','b','c']
})

# 1) null 값을 np.nan으로 변경
df_null['column2'].replace('', np.nan, inplace=True)

# 2) np.nan인 행 삭제
df_null.dropna(subset=['column2'])

# 2_) or null 값을 0으로 변경
df_null.fillna(0)
9) loc, iloc
loc:インデックス値自体
iloc:インデックスの順序(0、1、...)
"""
Description:
	(AS-IS)
           | column1 | column2 |
      1    |    2    |   'b'   |
      2    |    3    |   'c'   |
  
  	(TO-BE)
    column1  2
    column2  b
    Name: 1, dtype: object
    -> series 형태로 반환
"""
# ㅣoc 사용
df.loc[1]

# iloc 사용
df.iloc[0]
10)集合にグループ化
2つのカラムを1つのsetタイプのデータにマージ
"""
Description:
	(AS-IS)
    | column1 | column2 |
	|    2    |   'b'   |
	|    3    |   'c'   |
    
    (TO-BE)
    | column1 | column2 | set_col |
	|    2    |   'b'   |  {2,b}
	|    3    |   'c'   |  {3,c}
"""
df.loc[:, 'set_col'] = df[['column1','column2']].agg(set, axis=1)
11)json鍵に対応するデータのインポート
mapper = {
    1: 'first',
    2: 'second',
    3: 'third',
    4: 'fourth',
    5: 'fifth'
}

# return : 'third'
mapper[3]

# return : 'third'
mapperget(3)

# ['first', 'second', 'third'] (리스트를 return)
lst = [1,2,3]
list(map(lambda x: json.get(x), lst))
12)カラム固有の値を入力
方法1)mapperを作成し、標準列でマージする
"""
Description:
	mapper = df.set_index('기준컬럼명')['나타낼 컬럼명'].to_dict()
	병합할df.loc[:, 'column'] = 병합할df.loc[:, '기준컬럼명'].map(mapper명)
"""

df = pd.DataFrame({
    'column1' : ['a','b','c'],
    'column2' : ['apple','bike','circle']
})

# mapper 생성
mapper = df.set_index('column1')['column2'].to_dict()

# 새로운 DataFrame에 병합
new_df = pd.DataFrame({
    'column1' : [1,2,3],
    'column2' : ['a','b','c']
})
new_df.loc[:, 'new_col'] = new_df.loc[:, 'column2'].map(mapper)
方法2)merge
on=標準列名->2つのデータフレームの列名は同じでなければなりません.
13) groupby
  • groupby 2番->複数のインデックスを作成する
    df.groupby('column1').apply(lambda x: x.groupby('column2').size())
  • すべての行(sort values,value counts)
    df.groupby('column1').apply(lambda x: x.sort_values(by='기준'))
    をリストします.
    14)2つのカラムを比較して、新しい条件を満たすカラムを作成する
    df.apply(lambda x: True if x['column1'] in x['column2'] 
    						else False, axis=1)
    15)特定の値を含む行の削除
    """
    Description:
    	(AS-IS)
        | column1 |  column2 |
    	|    a    |  apple   |
    	|    b    |  bike    |
        |    c    |  circle  |
        
        (TO-BE)
        'bike'라는 특정 문자열을 가진 행 제거
        | column1 |  column2 |
    	|    a    |  apple   |
        |    c    |  circle  |
    """
    rm_row = df['column2'].isin(['bike'])
    df[~rm_row]
    
    16)2つの列を結合して演算する
    """
    Description: 
    	(AS-IS)
    	| column1 |  column2 |
    	|    a    |  apple   |
    	|    b    |  bike    |
        |    c    |  circle  |
        
        (TO-BE)
        [('a', 'apple'), ('b', 'bike'), ('c', 'circle')]
    """
    
    list(zip(df['column1'], df['column2']))