我正在使用iPython笔记本.当我这样做:
df
Run Code Online (Sandbox Code Playgroud)
我得到一张带细胞的美丽桌子.但是,如果我这样做:
df1
df2
Run Code Online (Sandbox Code Playgroud)
它不会打印出第一张漂亮的桌子.如果我试试这个:
print df1
print df2
Run Code Online (Sandbox Code Playgroud)
它以不同的格式打印出表格,使列溢出并使输出非常高.
有没有办法强制它打印出两个数据集的漂亮表格?
我在pandas DataFrame中有一个字段,它以字符串格式导入.它应该是一个日期时间变量.如何将其转换为日期时间列,然后根据日期进行过滤.
例:
我有一个用pandas创建的现有情节,如下所示:
df['myvar'].plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)
y轴的格式为float,我想将y轴更改为百分比.我找到的所有解决方案都使用ax.xyz语法,我只能将代码放在上面创建绘图的行下方(我不能将ax = ax添加到上面的行中.)
如何在不更改上述行的情况下将y轴格式化为百分比?
这是我找到的解决方案,但要求我重新定义情节:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mtick
data = [8,12,15,17,18,18.5]
perc = np.linspace(0,100,len(data))
fig = plt.figure(1, (7,4))
ax = fig.add_subplot(1,1,1)
ax.plot(perc, data)
fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
xticks = mtick.FormatStrFormatter(fmt)
ax.xaxis.set_major_formatter(xticks)
plt.show()
Run Code Online (Sandbox Code Playgroud)
链接到上述解决方案:Pyplot:在x轴上使用百分比
我想将一些数据带入pandas DataFrame,我想在导入时为每列分配dtypes.我希望能够为具有许多不同列的较大数据集执行此操作,但是,作为示例:
myarray = np.random.randint(0,5,size=(2,2))
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype=[float,int])
mydf.dtypes
Run Code Online (Sandbox Code Playgroud)
结果是:
TypeError:数据类型未被理解
我尝试了一些其他方法,例如:
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': int})
Run Code Online (Sandbox Code Playgroud)
TypeError:类型为'type'的对象没有len()
如果我把dtype=(float,int)它应用浮动格式到两列.
最后,我想能够传递一个数据类型列表,就像我可以传递一个列名列表一样.
我正在使用dependency_links安装包.它似乎安装了软件包,但破坏了pip冻结功能(这可能意味着存在更深层次的安装问题.)我希望能够从自定义服务器下载软件包,而无需在运行之外进行任何设置setup.py.
这是我的setup.py档案:
from setuptools import setup
setup(
name='package'
,version='0.1.0'
,packages=['foo',
'bar'
]
,long_description=''
,url='https://github.com/myrepo'
,install_requires=['numpy>=1.9.2'
,'some_package'
]
,dependency_links=[
"http://custom_server/packages/some_package-0.1.0.tar.gz"
]
)
Run Code Online (Sandbox Code Playgroud)
安装似乎工作正常,但如果我尝试运行pip_freeze我得到下面的错误.
pip freeze
Error [Errno 20] Not a directory: '/Users/abc/anaconda/lib/python2.7/site-packages/some_package.egg' while executing command git rev-parse
Exception:
Traceback (most recent call last):
File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/basecommand.py", line 209, in main
status = self.run(options, args)
File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/commands/freeze.py", line 70, in run
for line in freeze(**freeze_kwargs):
File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/operations/freeze.py", line 49, in freeze
dependency_links
File "/Users/myname/anaconda/lib/python2.7/site-packages/pip/__init__.py", line 235, in …Run Code Online (Sandbox Code Playgroud) 我有一本字典:
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
Run Code Online (Sandbox Code Playgroud)
我想创建两者的笛卡尔积,以便得到每个可能对的元组.
output: [(1,10),(1,20),(1,30),
(2,10),(2,20),(2,30),
(3,10),(3,20),(3,30)]
Run Code Online (Sandbox Code Playgroud)
似乎有一种简单的方法可以做到这一点,如果我有三个项目,它会扩展.有点像动态循环次数.感觉像我错过了一个明显的方法来做到这一点......
这可能是一个简单的解决方案,但我将如何转换SAS日期时间编号(自1960年1月1日以来的秒数.)pandas列中的一个值的示例是1716470000.
我试过了:
df['PyDatetime'] = pd.to_datetime(df,infer_datetime_format=True)
Run Code Online (Sandbox Code Playgroud)
我得到像'1970-01-01 00:00:01.725480'这样的数字
我在Pandas中对浮点变量进行排名,我想强制排名是唯一的(在关系中没有重复的排名.)
这是发生的事情:
vals = pd.Series([0.0133, 0.0018, np.nan, 0.0006, 0.0006])
vals.rank(ascending=False, method='dense')
0 1.0
1 2.0
2 NaN
3 3.0
4 3.0
Run Code Online (Sandbox Code Playgroud)
我希望结果是
0 1.0
1 2.0
2 NaN
3 3.0
4 4.0
Run Code Online (Sandbox Code Playgroud)
我可以使用该rank方法执行此操作,还是必须使用某些排序和循环逻辑手动执行此操作?
我需要比较2组的2维分布。
当我使用matplotlib.pyplot.contourf和覆盖图时,每个轮廓图的背景色将填充整个图空间。有什么方法可以使每个等高线图的最低等高线透明,以便更容易看到每个等高线的中心?
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import scipy.stats as st
def make_cloud(x, y, std, n=100):
x = np.random.normal(x, std, n)
y = np.random.normal(y, std, n)
return np.array(zip(x, y))
def contour_cloud(x, y, cmap):
xmin, xmax = -4, 4
ymin, ymax = -4, 4
xx, yy = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([xx.ravel(), yy.ravel()])
values = np.vstack([x, y])
kernel = st.gaussian_kde(values)
f = np.reshape(kernel(positions).T, xx.shape)
plt.contourf(xx, yy, f, cmap=cmap, alpha=0.5)
cloud1 = make_cloud(-1, …Run Code Online (Sandbox Code Playgroud) 我想将标准从我的 dag 中与气流生成的日志分开保存。
我的脚本打印到标准输出,我想在每次运行时将其(并且仅是)捕获到指定的日志文件中。我试过了
logfile = 'mylog_01.log'
myfunc = def()...
log = open(logfile, "ab")
sys.stdout = log
print_params = PythonOperator(task_id="print_params",
python_callable=myfunc,
provide_context=True,
dag=dag)
Run Code Online (Sandbox Code Playgroud)
...但 std.out 在每个 PythonOperator 中被重置。我如何控制标准输出在所有 python 运算符中打印到的位置?
此外,我在脚本中使用了数百个打印语句,因此在这种情况下修改每个语句是不切实际的。