Pythonの穏やかなヒント


1.colab中韓文字体が破壊された場合


関連記事が多く、いろいろ試してみましたが、結局食べられたのはこの文章だけでした.親切な作者に感謝...未来の私のためにここにいます.
🤗 あわてないで
この方法はsebornでもmatplotlibでも.初めて検索した時『ん?』「sebornを描くのになぜmatplotlibの投稿しかないの?」そして長い間Seabornの文章を探していました...どちらも同じですから、心配しないで、ついて行きましょう.

STEP 1. フォントのインストール


ハングルフォントをインストールします.次は共有フォントです
!apt-get update -qq	# 요건 하던지 말던지
!apt-get install fonts-nanum* -qq
参考までに!pip installなど見たくなければ、命令の最後に&> /dev/nullを付けるだけです.

STEP 2. フォントのインストールパスの確認

import matplotlib.font_manager as fm    # plot 폰트 매니저

# 전체 폰트 중에서 나눔 폰트 경로를 확인한다
sys_font=fm.findSystemFonts()
nanum_font = [f for f in sys_font if 'Nanum' in f]       
nanum_font
上のコードを実行すると、以下のようにフォントインストールパスに分けられます.
['/usr/share/fonts/truetype/nanum/NanumGothicLight.ttf',
 '/usr/share/fonts/truetype/nanum/NanumBrush.ttf',
 '/usr/share/fonts/truetype/nanum/NanumSquareRoundL.ttf',...]

STEP 3. フォントの指定


上で確認したパスを使用してplotフォントを指定します.
import matplotlib as mpl 		
import matplotlib.pyplot as plt

font_location = '/usr/share/fonts/truetype/nanum/NanumSquareRoundEB.ttf'	# 여기에 원하는 폰트 경로를 넣는다
font_name = fm.FontProperties(fname=font_location).get_name()
plt.rc('font', family=font_name)

mpl.rcParams['axes.unicode_minus'] = False	# minus(-) 기호가 깨지는 것을 방지
fm._rebuild()	# 이걸 안 하면 폰트 설정이 안 된다. 왜인지는 잘 모르겠다...
🤨 直接フォルダにフォントを入れてはいけませんか?
フォルダにNanumSquareRoundLを直接使用します.ttfを入れてfont_locationにパスすれば、インストールする必要はないでしょう.万!不思議なことに、その方法は役に立たない.少なくとも私が書いた方法ではそうです.
毎回!aptフォントをインストールしないで、フォルダの中のものを直接書かなければなりません.

STEP 4. ランタイムを再起動して実行


上記の手順が完了しても、ハングルは破られます.CTRL+Mを押して運転を再起動し、コードを再実行すると正常に動作します.

2. df.pivot tableの後に無いNaNが出来た時


出力df.isnull().sum()は、Nullがないことを確認し、df.pivot_tableをし、突然Nullが発生した.これは、pivot_table(index=..., columns=..., values=...)からindexcolumnsの間のvalueがない場合に生じる問題である.これはいったい何の話ですか.🙄) この文章には、以下のように転載される具体的な例がある.
>> purchase_data
>> 
	date	customer_id	purchase_qty
0	01/01	    id1		    12
1	01/01	    id2		     5
2	01/02	    id1		     4
3	01/03	    id1		     7

>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum)
>>

customer_id	id1	id2

date
01/01		 12	   5
01/02		  4	 NaN
01/03		  7	 NaN
indexは、pivotテーブルのインデックスを文字通り、columnsはpivotテーブルで使用されるカラムの基準を表す.次に、valuesは、計算される値がindexおよびcolumnsであることを意味する.いずれの設定も行わない場合、演算の平均値はvaluesであり、agg_funcオプションを使用する場合、加算、乗算などの演算も可能である.
上記の例の選択日はindexであり、顧客idはcolumnsである.次に、日付とid(意味はないが、例のため)に基づいて、その顧客が購入した数の和を求める.
しかし、ご覧のように、01/02と01/03では、id 2のお客様は注文していません.従って、index(01/02,01/03)およびcolumns(id 2)に対応するvalues(purchate qty)がないため、NANとして処理される.したがって、元のデータにNullがない場合でも、pivot_tableを使用するとNullが発生する可能性があります.この問題を解決するには、対応する値がない場合に、fill_valueオプションに入力する値を入力します.
>> purchase_data
>> 
	date	customer_id	purchase_qty
0	01/01	    id1		    12
1	01/01	    id2		     5
2	01/02	    id1		     4
3	01/03	    id1		     7

>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum, fill_value=0)
>>

customer_id	id1	id2

date
01/01		 12	   5
01/02		  4	   0
01/03		  7	   0
値がない場合は0に処理されることがわかります.

3.相関行列で相関の大きい/小さいペアを順に表示したい場合


複数の変数間の相関を同時に表示するために、相関行列とホットマップがよく使用されます.

ソース:seaborn
ただ,変数が多すぎると,どのペアの相関度が最も高いか,最も低いかを見るのは難しい.値を直接確認する方法は次のとおりです.
# correlation matrix 만들기
corr_matrix = data.corr()	

# 오름차순으로 정렬하되 중복되는 쌍은 제거하기
sort_corr = corr_matrix.unstack().sort_values().drop_duplicates()
# 작은 값 순서대로 10쌍 출력
sort_corr[:10] 
unstack()は行列内の値を系列に変換し、sort_values()は系列内の値を昇順に並べた.上にdrop_duplicates()を作らないと、下のように順序だけを変えた同じペアが現れ、値を特定するのが難しい.
A B -0.7
B A -0.7
A D -0.6
D A -0.6
逆降順で並べ替える場合は、sort_values(ascending=False)に置けばいいです.しかし、この場合、A、B、C、...このように、まず自分の相関ペアが現れるので、sort_corr[5:]のように変数の個数をスキップして出力します.
一般に、unstack()は、多指数を除去するために使用される.例はこのブログにおいて非常によく示されている.私たちの現在の状況のようにマルチインデックスではないpdDataFrameはunstack()でpdを表します.Seriesは戻ります.