小编RSH*_*HAP的帖子

按周划分Pandas Dataframe

我有一个包含"Date"和"Num"列的数据框.

dates = pd.date_range('1/1/2001','1/1/2003', freq = 'd')
nums = [np.random.randint(100) for x in range(len(dates))]

df = pd.DataFrame({'Dates': dates, 'DOW': dates.strftime('%a'), 'Nums': nums})
df = df[(df.DOW != 'Sat') & (df.DOW !='Sun')]
df = df.drop([7,18]).reset_index(drop = True)
Run Code Online (Sandbox Code Playgroud)

我需要对数据帧进行分区,以便我可以分别隔离每周.最终目标是查看每周的MAX'Nums'值,并将其与下周的LAST值进行比较,以了解百分比变化的大小.例如:

week1 = df[0:5]
week2 = df[5:9]
week3 = df[9:12]

In [156]: w1max = week1.Nums.max()
Out[156]: 97

In [157]: w2Last = week2.iloc[-1].Nums
Out[157]: 76

pctChange = (w2Last-w1max)/float(w1max)

In [166]: pctChange
Out[166]: -0.21649484536082475
Run Code Online (Sandbox Code Playgroud)

问题是几天都缺少了几天(例如,周二缺少星期一,星期五缺少第3周).那么如何将它们分开呢?

最接近的似乎是使用df.resample()但我不知道如何进行比较我正在尝试使用它.

python datetime resampling pandas

6
推荐指数
1
解决办法
1176
查看次数

Big Query 按分组字段排序

我有一个按日期分组的查询,效果很好。

SELECT EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern')) date, SUM(users) total_users FROM `mydataset.mytable` 
GROUP BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试按日期订购时:

SELECT EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern')) date, SUM(users) total_users FROM `mydataset.mytable` 
GROUP BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'))
ORDER BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SELECT list expression references column timestamp which is neither grouped nor aggregated at [1:35]
Run Code Online (Sandbox Code Playgroud)

时间戳列显然是 group by 的一部分,甚至更奇怪的是它在没有ORDER BY子句的情况下工作......这里发生了什么?

group-by sql-order-by google-bigquery google-cloud-platform

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

熊猫回填特定值

我有这样的数据帧:

df = pd.DataFrame({'val': [np.nan,np.nan,np.nan,np.nan, 15, 1, 5, 2,np.nan, np.nan, np.nan, np.nan,np.nan,np.nan,2,23,5,12, np.nan np.nan, 3,4,5]})
df['name'] = ['a']*8 + ['b']*15

df

>>> 
    val name
0   NaN    a
1   NaN    a
2   NaN    a
3   NaN    a
4   15.0   a
5   1.0    a
6   5.0    a
7   2.0    a
8   NaN    b
9   NaN    b
10  NaN    b
11  NaN    b
12  NaN    b
13  NaN    b
14  2.0    b
15  23.0   b
16  5.0    b
17  12.0   b
18  NaN …
Run Code Online (Sandbox Code Playgroud)

python pandas fillna

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

Sklearn Chi2用于功能选择

我学习卡方特征选择和整个代码就喜欢这个

但是,我对chi2的理解是,分数越高,表示该功能独立(因此对模型的使用较少),因此我们对分数最低的功能感兴趣。但是,使用scikit可以学习SelectKBest,选择器将返回具有最高 chi2分数的值。我对使用chi2测试的理解不正确吗?还是sklearn中的chi2分数产生了chi2统计量以外的结果?

请参阅下面的代码以了解我的意思(除结尾外,大部分都是从以上链接复制而来)

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
import pandas as pd
import numpy as np

# Load iris data
iris = load_iris()

# Create features and target
X = iris.data
y = iris.target

# Convert to categorical data by converting data to integers
X = X.astype(int)

# Select two features with highest chi-squared statistics
chi2_selector = SelectKBest(chi2, k=2)
chi2_selector.fit(X, y)

# Look at scores returned …
Run Code Online (Sandbox Code Playgroud)

python machine-learning chi-squared feature-selection scikit-learn

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

Selenium Chrome 选项和功能

我正在尝试使用 selenium 自动下载文件。为此,我想设置默认下载目录并禁用下载提示。它似乎不起作用,我传递的选项甚至似乎都没有注册。下面是我如何创建浏览器的示例。有谁知道发生了什么?

chromedriver = 'PATH/TO/chromedriver'

download_fp = './testPrismaDownload/'
prefs = {
    "download.prompt_for_download" : False,
    "download.default_directory": download_fp
}

options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome-stable'
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-setuid-sandbox')
options.add_experimental_option('prefs', prefs)

# i've tried various combinations of `options`, `chrome_options` (deprecated) and `desired_capabilities`
browser = webdriver.Chrome(options=options, desired_capabilities=options.to_capabilities(), executable_path=chromedriver)
Run Code Online (Sandbox Code Playgroud)

我指定的选项都没有出现在browser.capabilities或 中browser.desired_capabilities。例如,功能中 chromeOptions 的键是goog:chromeOptions': {'debuggerAddress': 'localhost:42911'}.

当我执行download_button.click()命令成功但没有下载。我也在我的 mac 笔记本电脑上尝试过,没有 --headless 选项,当我点击下载按钮时,浏览器会打开下载对话框,提示下载确认。

任何帮助/经验将不胜感激。

Python 3.6.6 :: Anaconda, Inc.

硒'3.141.0'

Linux 9725a3ce7b7e 4.9.125-linuxkit #1 SMP Fri Sep 7 …

python selenium google-chrome selenium-chromedriver desiredcapabilities

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

容器内的 Docker 套接字权限

我正在尝试从容器内的用户访问在我的主机上运行的 docker。我尝试通过将主机上的套接字映射到容器卷来做到这一点docker run -it -v /var/run/docker.sock:/var/run/docker.sock myimage bash

在我的主机ls -l上 /var/run/docker.sock 显示所有者是我的普通主机用户(不是 root),但是当我查看容器时,它属于 root 用户。因此,当我尝试连接到容器内的 docker 时,我收到“权限被拒绝”。这是示例图像

FROM ubuntu:latest
USER root

RUN apt-get update -y && apt-get upgrade -y \
    && apt-get install -y python python-dev python3.6 python-pip 
virtualenv libssl-dev libpq-dev git build-essential libfontconfig1 
libfontconfig1-dev
RUN pip install setuptools docker


RUN useradd -ms /bin/bash -d /usr/local/myuser myuser
RUN chown -R myuser: /usr/local/myuser
USER myuser
Run Code Online (Sandbox Code Playgroud)

建立形象

docker build -t myimage .

启动 bash shell

docker run -it -v …

macos docker dockerfile docker-volume

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

了解Matplotlib的箭袋绘图

我试图了解它是如何plt.quiver()工作的.我的问题如下:

我绘制一个简单的向量(1,1):

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(2)
ax = fig.add_subplot(111)
ax.quiver(0,0, 1, 1, units = 'xy', scale = 1)
plt.xticks(range(-5,6))
plt.yticks(range(-5,6))
plt.grid()
Run Code Online (Sandbox Code Playgroud)

我希望箭头从那里(0,0)开始(1,1),但结果略有偏离:矢量1,1

同样地,我尝试为矢量绘制一个箭头,(0,3)结果箭头似乎是矢量(0,3.5)...

在此输入图像描述

我的假设是,这事做与kwargs 'units','scale','angles',和'scale_units'.我已经阅读了关于它们的文档,但没有完全理解它们是如何工作的.周日学校的解释将不胜感激!

python vector matplotlib

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

Matplotlib代号

有人可以给我一个如何使用以下tickFormatters的示例。这些文档对我而言无益。

ticker.StrMethodFormatter() ticker.IndexFormatter()

例如,我可能会认为

x = np.array([ 316566.962,  294789.545,  490032.382,  681004.044,  753757.024,
            385283.153,  651498.538,  937628.225,  199561.358,  601465.455])
y = np.array([ 208.075,  262.099,  550.066,  633.525,  612.804,  884.785,
            862.219,  349.805,  279.964,  500.612])
money_formatter = tkr.StrMethodFormatter('${:,}')

plt.scatter(x,y)
ax = plt.gca()
fmtr = ticker.StrMethodFormatter('${:,}')
ax.xaxis.set_major_formatter(fmtr)
Run Code Online (Sandbox Code Playgroud)

会将我的刻度标签设置为美元符号,并用逗号分隔数千个地方的ala

['$300,000', '$400,000', '$500,000', '$600,000', '$700,000', '$800,000', '$900,000']
Run Code Online (Sandbox Code Playgroud)

但是我却得到了索引错误。

IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)

对于IndexFormatter文档说:

从标签列表中设置字符串

我真的不知道这意味着什么,当我尝试使用它时,抽动症消失了。

python matplotlib ticker

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

Pandas - 旋转多个分类列

我有一个这样的数据框:

name = ['fred','fred','fred','james','james','rick','rick','jeff']
actionfigures = ['superman','batman','flash','greenlantern','flash','batman','joker','superman']
cars = ['lamborghini', 'ferrari','bugatti','ferrari','corvette','bugatti','bmw','bmw']
pets = ['cat','dog','bird','cat','dog','dog','fish','marmet']

test = pd.DataFrame({'name':name,'actfig':actionfigures,'car':cars,'pet':pets})

    actfig       car                name    pet
0   superman     lamborghini        fred    cat
1   batman       ferrari            fred    dog
2   flash        bugatti            fred    bird
3   greenlantern ferrari            james   cat
4   flash        corvette           james   dog
5   batman       bugatti            rick    dog
6   joker        bmw                rick    fish
7   superman     bmw                jeff    marmet
Run Code Online (Sandbox Code Playgroud)

如果我的术语不正确,请原谅我,但我想旋转数据,以便获得每个名称的 ['actionfigures','car','pet'] 列中每个值的计数。

    batman  flash   greenlantern    joker   superman    bmw bugatti corvette    ferrari lamborghini bird    cat dog fish    marmet
name …
Run Code Online (Sandbox Code Playgroud)

python pivot-table pandas

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

R 按周聚合

R 新手请原谅我,如果术语是关闭的。

我有一个数据框

      date           val1   val2 val3         val4
1  2016-01-01     8007.59 128739 1573            0
2  2016-01-02     8526.98 142289 1798            0
3  2016-01-03     7720.77 132418 1433            0
4  2016-01-04     6845.67 123710 1280            0
5  2016-01-05     7176.20 126395 1302            0
6  2016-01-06     6125.98 117223 1148            2
7  2016-01-07     6125.16 109752 1119           30
8  2016-01-08     6869.92 107377 1233           24
9  2016-01-09     7289.16 107644 1326           25
10 2016-01-10     7360.92 124131 1330           21
11 2016-01-11     6697.14 112992 1185           26
12 2016-01-12     6418.59 106102 1116           22 …
Run Code Online (Sandbox Code Playgroud)

datetime group-by aggregate r

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