我有一个包含"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()
但我不知道如何进行比较我正在尝试使用它.
我有一个按日期分组的查询,效果很好。
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
子句的情况下工作......这里发生了什么?
我有这样的数据帧:
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) 我学习卡方特征选择和整个代码就喜欢这个
但是,我对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
我正在尝试使用 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
我正在尝试从容器内的用户访问在我的主机上运行的 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 …
我试图了解它是如何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,3)
结果箭头似乎是矢量(0,3.5)
...
我的假设是,这事做与kwargs 'units'
,'scale'
,'angles'
,和'scale_units'
.我已经阅读了关于它们的文档,但没有完全理解它们是如何工作的.周日学校的解释将不胜感激!
有人可以给我一个如何使用以下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
文档说:
从标签列表中设置字符串
我真的不知道这意味着什么,当我尝试使用它时,抽动症消失了。
我有一个这样的数据框:
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) 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) python ×7
pandas ×3
datetime ×2
group-by ×2
matplotlib ×2
aggregate ×1
chi-squared ×1
docker ×1
dockerfile ×1
fillna ×1
macos ×1
pivot-table ×1
r ×1
resampling ×1
scikit-learn ×1
selenium ×1
sql-order-by ×1
ticker ×1
vector ×1