2 列の pandas データフレームがあります (以下のスニペット)。City 列を使用して自治区を推測しようとしています (置換が必要な Unspecified 値がいくつかあることに気付くでしょう)。これを行うために、私は各都市について最高の発生区を表示し、キーが都市になり、値がその都市の最高発生区になる辞書に出力しようとしています。
City Borough
Brooklyn Brooklyn
Astoria Queens
Astoria Unspecified
Ridgewood Unspecified
Ridgewood Queens
したがって、Ridgewood が Queens と 100 回、Brooklyn が 4 回、Manhattan が 1 回ペアになっていることがわかった場合、ペアは Ridgewood : Queens になります。
これまでのところ、私はこのコードを試しました:
specified = data[['Borough','City']][data['Borough']!= 'Unspecified']
paired = specified.Borough.groupby(specified.City).max()
一見、これは正しい出力のように見えましたが、よく調べてみると、出力はまったく正しくありません。何か案は?
編集:
以下の提案を試してみました: paired = specified.groupby('City').agg(lambda x: stats.mode(x['Borough'])[0])
以下に示すように、いくつかの自治区が切り捨てられていることに気付きました。
paired.Borough.value_counts()
#[Out]# QUEENS 58
#[Out]# MANHATTAN 7
#[Out]# STATEN ISLAND 4
#[Out]# BRONX 4
#[Out]# BROOKLYN 3
#[Out]# MANHATTA 2
#[Out]# STATE 1
#[Out]# QUEEN 1
#[Out]# MANHA 1
#[Out]# BROOK 1
もちろん、切り捨てられた単語を手動で置き換えることもできますが、原因が何か知りたいですか?
PS - 参考までに指定された DF の出力は次のとおりです。
specified
#[Out]# <class 'pandas.core.frame.DataFrame'>
#[Out]# Int64Index: 719644 entries, 1 to 396225
#[Out]# Data columns:
#[Out]# Borough 719644 non-null values
#[Out]# City 651617 non-null values
#[Out]# dtypes: object(2)
specified.Borough.value_counts()
#[Out]# QUEENS 215382
#[Out]# BROOKLYN 208565
#[Out]# MANHATTAN 150016
#[Out]# BRONX 94648
#[Out]# STATEN ISLAND 51033