假设我有一个名为a.py的 python 脚本,如下所示:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author : Bhishan Poudel
# Date : Jul 13, 2016
# Imports
# Script
print("hello")
Run Code Online (Sandbox Code Playgroud)
我可以通过两种方式运行这个脚本:
使用 python 解释器:
python3 a.py
Run Code Online (Sandbox Code Playgroud)
更改权限
chmod a+x a.py; ./a.py
Run Code Online (Sandbox Code Playgroud)
问题
如何在不一直使用chmod a+x script_name的情况下运行任何新的或旧的 python 脚本。
我对我的计算机具有 root 访问权限和用户访问权限。
基本上我想要所有 .py 文件的可执行权限,我们该怎么做?
我尝试了不同的shebangs,例如:
#!/usr/bin/python3
#!/usr/bin/env python3
#!/usr/local/bin/python3
#!/usr/local/bin/env python3
Run Code Online (Sandbox Code Playgroud)
python 解释器也在 $PATH 中。echo $PATH 的输出如下:
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Users/poudel/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/
Run Code Online (Sandbox Code Playgroud)
此外, ls /usr/bin/py* 具有:
/usr/bin/pydoc* /usr/bin/python2.5@ /usr/bin/pythonw*
/usr/bin/pydoc2.5@ /usr/bin/python2.5-config@ /usr/bin/pythonw2.5@
/usr/bin/pydoc2.6@ /usr/bin/python2.6@ /usr/bin/pythonw2.6@ …Run Code Online (Sandbox Code Playgroud) 我们如何替换给定父文件夹中文件夹,子文件夹和文件名称中的空格?
我最初尝试更换到8级,如下所示.我相信有更好的方法.我的代码看起来很难看.更好的解决方案非常受欢迎.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
def replace_space_by_underscore(path):
"""Replace whitespace in filenames by underscore."""
import glob
import os
for infile in glob.glob(path):
new = infile.replace(" ", "_")
try:
new = new.replace(",", "_")
except:
pass
try:
new = new.replace("&", "_and_")
except:
pass
try:
new = new.replace("-", "_")
except:
pass
if infile != new:
print(infile, "==> ", new)
os.rename(infile, new)
if __name__ == "__main__":
try:
replace_space_by_underscore('*/*/*/*/*/*/*/*')
except:
pass
try:
replace_space_by_underscore('*/*/*/*/*/*/*')
except:
pass
try:
replace_space_by_underscore('*/*/*/*/*/*')
except:
pass
try:
replace_space_by_underscore('*/*/*/*/*') …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据框:
id type city
0 2 d H
1 7 c J
2 7 x Y
3 2 o G
4 6 i F
5 5 b E
6 6 v G
7 8 u L
8 1 g L
9 8 k U
Run Code Online (Sandbox Code Playgroud)
我想使用 Pandas 获得与 SQL 命令中类似的输出:
select id,type
from df
order by type desc
limit 4
offset 2
Run Code Online (Sandbox Code Playgroud)
需要的结果是:
id type
0 8 u
1 2 o
2 8 k
3 6 i
Run Code Online (Sandbox Code Playgroud)
我试图按照官方教程https://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html#top-n-rows-with-offset
df.nlargest(4+2, columns='type').tail(4) …Run Code Online (Sandbox Code Playgroud) 我知道我们可以使用 pandas dataframe 过滤器仅选择几列,但是我们也可以仅排除某些列吗?
这是 MWE:
import numpy as np
import pandas as pd
df = pd.DataFrame({'id': [1,2,3], 'num_1': [10,20,30], 'num_2': [20,30,40]})
df.filter(regex='num')
Run Code Online (Sandbox Code Playgroud)
我们可以选择列中没有“num”的所有列吗:
就像是:
df.filter(regex='^(num)')
Run Code Online (Sandbox Code Playgroud)
所需输出
id
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)
笔记
# these already works, i am only looking regex way
df[['id']] # gives the required output
Run Code Online (Sandbox Code Playgroud)
参考:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.filter.html
假设我在父目录中有一些图像:../imagea/a.png 和 ../images/b.png。
当我做:
ls ../images
# I get
../images/a.png
../images/b.png
Run Code Online (Sandbox Code Playgroud)
如何为所有这些输出添加前缀
我试过:
!ls ../images/*.png | cat
# am not sure what to do next
Run Code Online (Sandbox Code Playgroud)


Run Code Online (Sandbox Code Playgroud)
感谢帮助。
我使用 pandas cut 来分箱连续值。我想知道如何获得每个垃圾箱的平均值。
import numpy as np
import pandas as pd
np.random.seed(100)
df = pd.DataFrame({'a': np.random.randint(1,10,10)})
df['bins_a'] = pd.cut(df['a'],4)
print(df)
a bins_a
0 9 (7.0, 9.0]
1 9 (7.0, 9.0]
2 4 (3.0, 5.0]
3 8 (7.0, 9.0]
4 8 (7.0, 9.0]
5 1 (0.992, 3.0]
6 5 (3.0, 5.0]
7 3 (0.992, 3.0]
8 6 (5.0, 7.0]
9 3 (0.992, 3.0]
Run Code Online (Sandbox Code Playgroud)
我试过:
df['bins_a_mean'] = df['bins_a'].mean()
But this fails.
Run Code Online (Sandbox Code Playgroud)
如何获得每个区间的均值?
我正在学习在 pandas 中使用 .pipe 方法,想知道我们是否可以使用它来绘制每组 groupby 的 distplot。
import numpy as np
import pandas as pd
import seaborn as sns
# data
np.random.seed(100)
data = {'year': np.random.choice([2016, 2018, 2020], size=400),
'item': np.random.choice(['Apple', 'Banana', 'Carrot'], size=400),
'price': np.random.random(size=400)}
df = pd.DataFrame(data)
# distplots
for year in df['year'].unique():
x = df['price'][df['year'] == year]
sns.distplot(x, hist=False, rug=True)
Run Code Online (Sandbox Code Playgroud)
我们可以使用 pandas groupby 而不使用 for 循环得到相同的图吗?
我的尝试:
df.groupby('year').pipe(lambda dfx: sns.distplot(dfx['price']))
# TypeError: cannot convert the series to <class 'float'>
# df[['year','price']].groupby('year').pipe(sns.distplot)
# TypeError: float() …Run Code Online (Sandbox Code Playgroud) 我正在阅读有关列转换器的 scikitlearn 教程。给定的示例(https://scikit-learn.org/stable/modules/generated/sklearn.compose.make_column_selector.html#sklearn.compose.make_column_selector)有效,但是当我尝试仅选择几列时,它给了我错误.
import numpy as np
import pandas as pd
import seaborn as sns
from sklearn.compose import make_column_transformer
from sklearn.compose import make_column_selector
df = sns.load_dataset('tips')
mycols = ['tip','sex']
ct = make_column_transformer(make_column_selector(pattern=mycols)
ct.fit_transform(df)
Run Code Online (Sandbox Code Playgroud)
我只想要输出中的选择列。
注意
当然,我知道我可以做到df[mycols],我正在寻找 scikit 学习管道示例。
我在我的 macbook 中创建了多个 miniconda 环境。但是当我打开 jupyter 笔记本时,它显示我很久以前创建的不存在的 conda 环境,并且这些环境在 conda 环境中不再可用。
如何从jupyter笔记本中删除这些不存在的环境名称?
(注意:例如,Jupyter 笔记本显示环境“xx”,该环境不在 conda env 列表中)
当我打开 jupyter 笔记本时,如何删除不存在的环境,例如“xx”?
我必须创建一个具有轴被抑制的图和定期绘制的切线,如下图所示.
使用R编程,我知道如何抑制刻度线并创建绘图.
但我不知道如何压制整个轴.
在这里,我需要省略整个a轴以及其他轴,例如顶轴和右轴.
我最初的尝试是这样的:
tau <- seq(-5,5,0.01)
a <- 0.4 # a is a constant parameter
sigma <- a*tau # tau is a variable, sigma = a*tau
x <- 1/a*cosh(sigma)
y <- 1/a*sinh(sigma)
# plot
plot(x,y,type="l",xaxt="n",yaxt="n")
abline(h=0,lty=1)
Run Code Online (Sandbox Code Playgroud)
该图还需要在点处的点和切线a*tau = -1,-0.5, 0, 0.5 and 1.
python ×10
pandas ×5
bash ×2
batch-rename ×1
chmod ×1
conda ×1
dataframe ×1
executable ×1
ggplot2 ×1
markdown ×1
matplotlib ×1
miniconda ×1
path ×1
plot ×1
r ×1
scikit-learn ×1
seaborn ×1
shell ×1