我有以下DataFrame:
df = pd.DataFrame([10, 10, 23, 23, 9, 9, 9, 10, 10, 10, 10, 12], columns=['values'])
Run Code Online (Sandbox Code Playgroud)
我想计算每个值的频率,但不计算总计数 - 每个值的计数,直到它变为另一个值.
我试过了:
df['values'].value_counts()
Run Code Online (Sandbox Code Playgroud)
但它给了我
10 6
9 3
23 2
12 1
Run Code Online (Sandbox Code Playgroud)
期望的输出是
10:2
23:2
9:3
10:4
12:1
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
说,我有以下数据框:
import pandas as pd
dict = {'val':[3.2, 2.4, -2.3, -4.9, 3.2, 2.4, -2.3, -4.9, 2.4, -2.3, -4.9],
'label': [0, 2, 1, -1, 1, 2, -1, -1,1, 1, -1]}
df = pd.DataFrame(dict)
df
val label
0 3.2 0
1 2.4 2
2 -2.3 1
3 -4.9 -1
4 3.2 1
5 2.4 2
6 -2.3 -1
7 -4.9 -1
8 2.4 1
9 -2.3 1
10 -4.9 -1
Run Code Online (Sandbox Code Playgroud)
我想在列标签中的 -1 值之前取每 n(例如 2)行。在给定的 df 中,首先 -1 出现在索引 3 处,我们取它之前的 2 …
我有一个数据框。我想对值进行分类并将其附加到新列。我可以用 pd.cut 来做到这一点。但问题是,使用 pd.cut 我手动设置标签和垃圾箱。但是,我只想设置步长(而不是 bin 号)。我也尝试过 np.linespace、np.arange 但我必须指定起点和终点以及 bin 计数。但可能存在一个数据帧,我无法知道数据帧中的最大和最小数量
df = pd.DataFrame([10, 10, 23, 42, 51, 33, 52, 42,44, 67, 65, 12, 10, 2, 3, 2, 77, 76],columns=['values'])
bins = [0, 10, 20,30, 40, 50, 60, 70]
labels = ['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70']
df['bins'] = pd.cut(df['values'], bins, labels=labels)
print (df)
values bins
0 10 0-10
1 10 0-10
2 23 20-30
3 42 40-50
4 51 50-60
5 33 30-40
6 52 50-60
7 42 …
Run Code Online (Sandbox Code Playgroud) 有没有任何工具可以计算 DBSCAN 算法的 minpts 和 eps 的最佳值?
目前我使用sklearn库来应用DBSCAN算法
from sklearn.cluster import DBSCAN
Run Code Online (Sandbox Code Playgroud)
我尝试了具有多个 minpts 和 eps 的算法,但没有任何计算。
我有 4 个文件,我根据 csv 文件的名称创建了列表:
file_names['file1', 'file2', 'file3', 'file4']
Run Code Online (Sandbox Code Playgroud)
在每个文件中我都有超过 6-7 列。我可以使用以下代码获取列名称:
for x in file_names:
df = pd.read_csv(path + x)
print(list(df.columns))
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是我如何创建(不是手动)带有 for 循环的字典,其中键file_names
和值是list(df.columns)
?