私はPandasを使ってPythonでcsvファイルを扱っています。 私は次の目標を達成する方法を考えているいくつかの問題を抱えています。 私が達成する必要があるのは、類似性機能を使用してエントリをグループ化することです。 たとえば、各グループXには、グループ内の各カップルが、特定の属性列値で最大でもYと異なるすべてのエントリを含める必要があります。(Python)類似性関数を使ったPandas - GroupBy()
A = {john;male;newyork;20
jack;male;newyork;21}
B={eric;male;san francisco;29
jenny;female;boston2;30}
C={mary;female;losangeles;45
maryanne;female;losangeles;48}
D={maryanne;female;losangeles;48
mattia;na;BostonDynamics;50}
:私は次のグループになるだろう、この値に高々3の違いで、
<pre>
name;sex;city;age
john;male;newyork;20
jack;male;newyork;21
mary;female;losangeles;45
maryanne;female;losangeles;48
eric;male;san francisco;29
jenny;female;boston2;30
mattia;na;BostonDynamics;50
</pre>
と年齢の列を考慮:
は、このCSVの例を考えます
これは私の回避策ですが、私はもっと無愛想なものが存在することを願っています。一つの属性で
import pandas as pandas
import numpy as numpy
def main():
csv_path = "../resources/dataset_string.csv"
csv_data_frame = pandas.read_csv(csv_path, delimiter=";")
print("\nOriginal Values:")
print(csv_data_frame)
sorted_df = csv_data_frame.sort_values(by=["age", "name"], kind="mergesort")
print("\nSorted Values by AGE & NAME:")
print(sorted_df)
min_age = int(numpy.min(sorted_df["age"]))
print("\nMin_Age:", min_age)
max_age = int(numpy.max(sorted_df["age"]))
print("\nMax_Age:", max_age)
threshold = 3
bins = numpy.arange(min_age, max_age, threshold)
print("Bins:", bins)
ind = numpy.digitize(sorted_df["age"], bins)
print(ind)
print("\n\nClustering by hand:\n")
current_min = min_age
for cluster in range(min_age, max_age, threshold):
next_min = current_min + threshold
print("<Cluster({})>".format(cluster))
print(sorted_df[(current_min <= sorted_df["age"]) & (sorted_df["age"] <= next_min)])
print("</Cluster({})>\n".format(cluster + threshold))
current_min = next_min
if __name__ == "__main__":
main()
私はあなたがパンダでそれをすることはできないと確信しています。あなたはsklearnのクラスタリングアルゴリズムを使用してみませんか? k-means? sklearnによって計算されたクラスタリングインデックスを取得したら、簡単にグループ化することができます。 –
私はクラスターの数を知る必要があると私はそれを計算した方法を考えることができないことを読んだことがあるので、データはクラスタの割合でランダムに分散することができます。それらが均等に分散されていれば(少なくともクラスターごとに1回)、math.ceil((max-min)/ threshold)クラスターが得られます。 k-meansで対応するクラスタにデータを正しく挿入することは可能ですか?少しの例が非常に役に立つでしょう。私はこれについて調べるつもりです。どうもありがとう。 –