小编Gin*_*ead的帖子

有没有办法在Python pandas中获取标签编码器的映射?

我正在使用以下代码将字符串转换为数据集中的分类值.

data['weekday'] = pd.Categorical.from_array(data.weekday).labels 
Run Code Online (Sandbox Code Playgroud)

例如,

index    weekday
0        Sunday
1        Sunday
2        Wednesday
3        Monday
4        Monday
5        Thursday
6        Tuesday
Run Code Online (Sandbox Code Playgroud)

对工作日进行编码后,我的数据集显示如下:

index    weekday
    0       3
    1       3
    2       6
    3       1
    4       1
    5       4
    6       5
Run Code Online (Sandbox Code Playgroud)

有什么方法我可以知道星期日已经映射到3,星期三到6,依此类推?

python pandas categorical-data

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

Python Pandas中的对象在组内的时差

我有一个如下所示的数据框:

from    to         datetime              other
-------------------------------------------------
11      1     2016-11-06 22:00:00          -
11      1     2016-11-06 20:00:00          -
11      1     2016-11-06 15:45:00          -
11      12    2016-11-06 15:00:00          -
11      1     2016-11-06 12:00:00          -
11      18    2016-11-05 10:00:00          -
11      12    2016-11-05 10:00:00          -
12      1     2016-10-05 10:00:59          -
12      3     2016-09-06 10:00:34          -
Run Code Online (Sandbox Code Playgroud)

我想分组"从"然后"到"列,然后按降序排序"日期时间",然后最终想要计算当前时间和下一次之间按对象分组的时间差.例如,在这种情况下,我想拥有如下数据框:

from    to     timediff in minutes                                          others
11      1            120
11      1            255
11      1            225
11      1            0 (preferrably subtract this date from the epoch)
11      12           300 …
Run Code Online (Sandbox Code Playgroud)

python pandas difference data-science pandas-groupby

16
推荐指数
3
解决办法
3416
查看次数

Pandas:TypeError:float()参数必须是字符串或数字

我有一个包含的数据框

user_id    date       browser  conversion  test  sex  age  country
   1    2015-12-03       IE        1         0    M   32.0   US
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的整个代码!

data["country"].fillna("missing")
data["age"].fillna(-10000, inplace=True)
data["ads_channel"].fillna("missing")
data["sex"].fillna("missing")
data['date'] = pd.to_datetime(data.date)

columns = data.columns.tolist()
columns = [c for c in columns if c not in ["test"]]
from sklearn import tree
clf = tree.DecisionTreeClassifier(max_depth=2, min_samples_leaf = (len(data)/100) )
clf = clf.fit(data[columns],data["test"])
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-560-95a8a54aa939> in <module>()
      4 from sklearn import tree
      5 clf = tree.DecisionTreeClassifier(max_depth=2, min_samples_leaf = (len(data)/100) )
----> …
Run Code Online (Sandbox Code Playgroud)

python pandas

8
推荐指数
2
解决办法
3万
查看次数

AttributeError: 无法访问“DataFrameGroupBy”对象的可调用属性“reset_index”,请尝试使用“apply”方法

我对熊猫很陌生,并试图使用groupby. 我有一个多列的 df。

  • 我想对特定列进行分组,然后根据不同的列对每个组进行排序。
  • 我想col1分组,然后对每个组进行排序col5,然后执行reset_index以获取数据帧的所有行。
  • 我收到以下错误 AttributeError: Cannot access callable attribute 'reset_index' of 'DataFrameGroupBy' objects, try using the 'apply' method

我的输入数据框:

col1 |  col2 | col3 | col4 | col5
=================================
A    |   A1   | A2   | A3   | DATE1
A    |   B1   | B2   | B3   | DATE2
Run Code Online (Sandbox Code Playgroud)

我的代码:

df.sort_values(['col5'],ascending=False).groupby('col1').reset_index()
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas pandas-groupby

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

无法打开编解码器'libopenh264':未指定错误

我正在使用OpenCV来处理我的研究视频.我在Windows 10上安装了Python 2.7和OpenCV 3.2版本.当我使用OpenCV在Python上对视频进行背景扣除时,它可以正常工作并产生输出.但是,当我尝试保存背景扣除视频时,会抛出此错误:

warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779)
warning: MAH00119.avi (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780)
OpenCV: FFMPEG: tag 0x34363258/'X264' is not supported with codec id 28 and format 'h264 / raw H.264 video'

Failed to load OpenH264 library: openh264-1.6.0-win64msvc.dll
    Please check environment and/or download library: https://github.com/cisco/openh264/releases

[libopenh264 @ 0000000001f5bf60] Incorrect library version loaded
Could not open codec 'libopenh264': Unspecified error
Run Code Online (Sandbox Code Playgroud)

我正在处理MP4视频.我在安装ffmpeg时仔细按照说明操作,就像添加bin的环境变量路径一样.我不知道还能做什么.现在坚持了三天.

任何帮助将非常感激!提前致谢!!

python video opencv ffmpeg

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

在 Python 中聚类时间序列数据

我正在尝试使用不同的聚类技术在 Python 中对时间序列数据进行聚类。K-means 没有给出好的结果。以下图像是我使用凝聚聚类进行聚类后的图像。我也尝试过动态时间扭曲。这两个似乎给出了相似的结果。

理想情况下,我想要的是第二张图像中时间序列的两个不同集群。第一个图像是一个快速增加的集群。第二个没有增加,有点像稳定,第三个是减少趋势的集群。我想知道哪些时间序列既稳定又流行(这里流行,我的意思是高计数)。我尝试了层次聚类,但结果显示层次结构太多,我不确定如何选择层次结构级别。有人可以阐明如何将第二张图像中的时间序列分成两个不同的集群,一个计数低,另一个计数高?有可能做到吗?或者我应该只是在视觉上选择一个阈值将它们切成两半?

快速增长的集群:

在此处输入图片说明

具有稳定计数的集群:

在此处输入图片说明

具有下降趋势的集群:

在此处输入图片说明

这是非常非常模糊的,但这是我的层次聚类的结果。

在此处输入图片说明 我知道这个特定的图像根本没有用,但这对我来说也是一个死胡同。

一般而言,如果您想区分趋势,例如 YouTube 视频,如何仅选择一些用于“趋势”部分,而另一些则用于“本周趋势”部分?我知道“趋势”部分的视频显示出与第一张图像相似的特征。“本周热门”部分有一系列视频,这些视频具有很高的观看次数,但在数量方面非常稳定(即没有显示出快速增长)。我知道在 YouTube 的情况下,除了观看次数之外,还有许多其他因素需要考虑。对于第二张图片,我想要做的类似于“本周趋势”部分。我想挑选那些计数非常高的。在这种情况下如何拆分时间序列?

我知道 DTW 捕捉趋势。DTW 给出了与上图相同的结果。它已经确定了第二个图像中“稳定”的趋势。但它没有在这里捕获“计数”元素。我希望捕获趋势和计数,在这种情况下稳定和高计数。

上面的图像是基于计数聚类的时间序列。我是否错过了可以实现这一目标的任何其他聚类技术?即使只是计数,我如何根据需要进行不同的聚类?

任何想法将不胜感激。提前致谢!

cluster-analysis machine-learning hierarchical-clustering time-series

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

在pyspark的collect_list中包含空值

我试图collect_list在 using 时包含空值pyspark,但是该collect_list操作排除了nulls. 我研究了以下帖子Pypsark - 使用collect_list 时保留空值。然而,给出的答案并不是我想要的。

我有一个df像这样的数据框。

| id | family | date       |
----------------------------
| 1  |  Prod  | null       |
| 2  |  Dev   | 2019-02-02 |
| 3  |  Prod  | 2017-03-08 |
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的代码:

df.groupby("family").agg(f.collect_list("date").alias("entry_date"))

这给了我这样的输出:

| family | date       |
-----------------------
| Prod   |[2017-03-08]|
| Dev    |[2019-02-02]|
Run Code Online (Sandbox Code Playgroud)

我真正想要的是如下:

| family | date             |
-----------------------------
| Prod   |[null, 2017-03-08]|
| Dev    |[2019-02-02]      |
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?谢谢你!

pyspark

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

OpenCV:FFMPEG:找不到标签0xffffffff /' '(格式'mp4/MP4(MPEG-4 Part 14)')'

我试图在python中保存背景扣除视频,以下是我的代码.

import cv2
import numpy as np

capture = cv2.VideoCapture('MAH00119.mp4')
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc(*'X264')
out = cv2.VideoWriter('output.mp4', -1 , 20.0 , size)
fgbg= cv2.createBackgroundSubtractorMOG2()

while True:
    ret, img = capture.read()
    if ret==True:
        fgmask = fgbg.apply(img)
        out.write(fgmask)
        cv2.imshow('img',fgmask)

    if(cv2.waitKey(27)!=-1):
        break

capture.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

但是,这会引发以下错误:"找不到OpenCV:FFMPEG:标签0xffffffff /' '(格式为'mp4/MP4(MPEG-4 Part 14)')'"

我安装了FFMPEG并将其添加到环境变量中.我的背景减法代码无需保存到文件工作正常,所以我知道openCV安装没有任何问题.我被困在这个地方.我知道我的python似乎没有识别FFMPEG,但我不知道除了将FFMPEG添加到环境变量之外还有什么可做的.我在Windows 10和Python 2.7上使用OpenCV 3.2版.

任何帮助都感激不尽!

python video opencv ffmpeg

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

返回 Pandas 数据框中的 n 个最大/最小值,其中许多行包含相同的值

我想知道如何在看起来像这样的数据帧 df 中返回包含 n 个最小值的行。

id           xx             count
1            A              1
2            B              1
3            C              3
4            D              2
5            E              3
6            F              10
7            G              11
8            H              17
Run Code Online (Sandbox Code Playgroud)

假设我想找到包含 3 个最小计数的行(在这种情况下,3 个最小计数是 1,2 和 3)。所以,我希望答案是这样的:

id           xx             count
    1            A              1
    2            B              1
    4            D              2
    3            C              3
    5            E              3
Run Code Online (Sandbox Code Playgroud)

如果我只是根据 count 和 use 对数据帧进行排序df.nsmallest(3, 'count'),它只会返回所需数据帧的前三行。但我想要包含 3 个最小计数的所有行。在熊猫中有没有更简单的方法来做到这一点?提前致谢!

python pandas

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