小编Den*_*loe的帖子

熊猫的get_dummies与Sklearn的OneHotEncoder()::什么更有效?

我正在学习不同的方法来将分类变量转换为机器学习分类器的数字.我遇到了这个pd.get_dummies方法,sklearn.preprocessing.OneHotEncoder()我想看看它们在性能和使用方面有何不同.

我找到了一个关于如何OneHotEnocder()https://xgdgsc.wordpress.com/2015/03/20/note-on-using-onehotencoder-in-scikit-learn-to-work-on-categorical-features/上使用的教程,因为该sklearn文件并没有这个功能也很有帮助.我有一种感觉,我没有正确地做到这一点......但是

有人可以解释使用pd.dummies过的优点和缺点,sklearn.preprocessing.OneHotEncoder()反之亦然吗?我知道这OneHotEncoder()给你一个稀疏矩阵但除此之外我不确定它是如何使用的,以及该pandas方法的好处是什么.我用它效率不高吗?

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
sns.set()

%matplotlib inline

#Iris Plot
iris = load_iris()
n_samples, m_features = iris.data.shape

#Load Data
X, y = iris.data, iris.target
D_target_dummy = dict(zip(np.arange(iris.target_names.shape[0]), iris.target_names))

DF_data = pd.DataFrame(X,columns=iris.feature_names)
DF_data["target"] = pd.Series(y).map(D_target_dummy)
#sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
#0                  5.1               3.5                1.4 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas scikit-learn dummy-variable

49
推荐指数
4
解决办法
2万
查看次数

如何在 Jupyter Lab 中查找和替换

Jupyter Notebooks 中有一个选项,您可以在其中选择一些单元格,然后按 F,这会打开查找和替换功能。

此快捷方式在 Jupyter Lab 中不起作用。它不在命令列表中,也不在编辑菜单中(只有查找 -- 和查找下一个和查找上一个)。我也找不到全局(不特定于单元格选择)查找和替换功能。

有这个功能吗?我在互联网上发现了它的旧提及——它被删除了吗?我正在使用 Jupyter Lab 1.2.3 版。

jupyter-notebook jupyter-lab

33
推荐指数
1
解决办法
2万
查看次数

共享某些元素的数组的数据结构 - Python

我有一组在某些元素上"重叠"的数组.这是一个涉及3个字符数组的示例图片:

  array0?
       'A'      ?array2
array1?'B' 'D' 'E'
       'C'     'F'
Run Code Online (Sandbox Code Playgroud)

重要的是对数组的更改应该尊重这种结构.因此,例如,如果我将array0中的'B'更改为'X',则array1中的'B'也应更改为'X'.

我的问题是在Python中实现这个的好方法是什么?

到目前为止,我想到了两件事:

一,我可以制作一个定制的类,其实例包含一个完全不同的列表,以及它所具有的任何重叠的信息,并适当地实现更新方法,以便对重叠的其他列表重复列表的任何更改.这似乎有点过分,并涉及重复数据.

二,我可以通过使用像这样的单例列表来做到这一点:

data = [['A'], ['B'], ['C'], ['D'], ['E'], ['F']]
array0 = [data[0], data[1], data[2]]
array1 = [data[1], data[3], data[4]]
array2 = [data[4], data[5]]

for array in array0, array1, array2:
     print(array)

>>> [['A'], ['B'], ['C']]
>>> [['B'], ['D'], ['E']]
>>> [['E'], ['F']]

array0[1][0] = 'X'

for array in array0, array1, array2:
     print(array)

>>> [['A'], ['X'], ['C']]
>>> [['X'], ['D'], ['E']]
>>> [['E'], ['F']]
Run Code Online (Sandbox Code Playgroud)

但我觉得这可能是hacky而不是最好的方式.谢谢你的任何建议.

python data-structures

14
推荐指数
1
解决办法
421
查看次数

如何获取每行pandas数据帧中特定值的频率

我有这个熊猫数据帧:

df = pd.DataFrame(
    data=[
        ['yes', 'no', np.nan],
        ['no', 'yes', 'no'],
        [np.nan, 'yes', 'yes'],
        ['no', 'no', 'no']
    ],
    index=pd.Index(['xyz_1', 'xyz_2', 'xyz_3', 'xyz_4'], name='ID'),
    columns=['class1', 'class2', 'class3']
)

print(df)
Out:

    ID         class1  class2   class3
xyz_1          yes     no       NaN    
xyz_2          no      yes      no
xyz_3          NaN     yes      yes
xyz_4          no      no       no
Run Code Online (Sandbox Code Playgroud)

我想获得每行类列中“是”和“否”的频率,并有一个新的数据框,如下所示:

    ID         yes     no       nan
xyz_1          1       1        1
xyz_2          1       2        0
xyz_3          2       0        1
xyz_4          0       3        0
Run Code Online (Sandbox Code Playgroud)

我看着这个问题,但我不想要总和,而是计数。

有任何想法吗?

python pandas

5
推荐指数
1
解决办法
788
查看次数

Pandas 与 MultiIndex 合并用于重复列

我有两个数据帧,包含相同对象(人)不同方面(左脚、右脚)的相同信息(长度、宽度)。

import pandas as pd

left_feet = pd.DataFrame(
    data={
        "Length": [20, 30, 25],
        "Width": [8, 10, 9]},
    index=[0, 1, 2])

right_feet = pd.DataFrame(
    data={
        "Length": [24, 30],
        "Width": [8, 10]},
    index=[2, 1])

print(left_feet)
   Length  Width
0      20      8
1      30     10
2      25      9

print(right_feet)
   Length  Width
2      24      8
1      30     10
Run Code Online (Sandbox Code Playgroud)

我想将这些合并到一个 DataFrame 中,所以我这样做:

feet = pd.merge(left_feet, right_feet,
         left_index=True, right_index=True,
         suffixes=["_left", "_right"])

print(feet)
   Length_left  Width_left  Length_right  Width_right
1           30          10            30           10
2           25           9            24            8
Run Code Online (Sandbox Code Playgroud)

然而,使用后缀很麻烦。我希望这些列是一个 …

python merge join multi-index pandas

5
推荐指数
1
解决办法
303
查看次数

如何在 Visual Studio Code 中查看 Jupyter Notebook git 差异?

如何在 Visual Studio Code 中查看 Jupyter Notebook git 差异?

一些消息来源似乎表明此功能现在可用,但我只看到原始文件的差异。 https://code.visualstudio.com/updates/v1_49#_notebooks

我使用的是最新的 Visual Studio Code 版本 1.62.3。我正在使用 Python 扩展和“本机笔记本”。我不确定是否需要添加notebook.diff.enablePreview: truesettings.json但无论如何,它没有任何效果。

更新:当我在源代码管理侧栏中的笔记本上选择“显示更改”时,我可以看到可读的差异。当我在 Git Graph 中的特定提交处的笔记本上选择“Click to View Diff”时,就会出现问题。也许这是一个 Git Graph 问题——最好的解决方法是什么?

在此输入图像描述

python git diff visual-studio-code jupyter-notebook

5
推荐指数
1
解决办法
2781
查看次数

Keras 模型中的权重和变量有什​​么区别?

我注意到tf.keras.Models 有两组相似的属性:

weights, variables
trainable_weights, trainable_variables
non_trainable_weights,non_trainable_variables

还有一些方法:

add_weight,add_variable

在我看过的模型中,属性对的值是相同的,并且是您所期望的(适当的tf.Variables 集合)。

所以我的问题是:两者有什么区别?在概念上有什么区别,什么时候应该使用其中之一?

这是 TensorFlow 2.3.1。

python keras tensorflow

4
推荐指数
1
解决办法
1556
查看次数

熊猫版的SQL CROSS APPLY

假设我们有一个DataFrame df

df = pd.DataFrame({
    "Id": [1, 2],
    "Value": [2, 5]
})

df
    Id  Value
0   1   2
1   2   5
Run Code Online (Sandbox Code Playgroud)

还有一些函数f需要一个元素df并返回一个DataFrame。

def f(value):
    return pd.DataFrame({"A": range(10, 10 + value), "B": range(20, 20 + value)})

f(2)
    A   B
0   10  20
1   11  21
Run Code Online (Sandbox Code Playgroud)

我们希望将应用于f中的每个元素df["Value"],并将结果连接到中df,如下所示:

    Id  Value   A   B
0   1   2       10  20
1   1   2       11  21
2   2   5       10  20
2   2   5       11  21
2 …
Run Code Online (Sandbox Code Playgroud)

python sql t-sql dataframe pandas

3
推荐指数
1
解决办法
191
查看次数

如何在20行后选择前5名

我有这个查询:

select top 5 * from tbl_post ORDER BY Id DESC
Run Code Online (Sandbox Code Playgroud)

我想选择第 20 行之后的前 5 行。我怎么能做到这一点?

sql sql-server

2
推荐指数
1
解决办法
2356
查看次数

将DataFrame转换为字典字典

我有一个数据帧如下:

DF:

Employee Day Hours_Worked
Tom      Monday  5
John     Monday  2 
Tom      Tuesday 3 
John     Tuesday 4
Run Code Online (Sandbox Code Playgroud)

我需要将它放入字典中的字典中,以便输出如下:

print(d)

d = {'Tom':{'Monday':5, 'Tuesday':3}, 'John': {'Monday':3, 'Tuesday':4'}..}
Run Code Online (Sandbox Code Playgroud)

我尝试过df.to_dict('dict')但这并不是我想要的.

谢谢.

python dictionary dataframe pandas

2
推荐指数
1
解决办法
72
查看次数