小编Chr*_*ris的帖子

在iPython Notebook中将DataFrame显示为表

我正在使用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)

它以不同的格式打印出表格,使列溢出并使输出非常高.

有没有办法强制它打印出两个数据集的漂亮表格?

printing pandas ipython-notebook display jupyter-notebook

208
推荐指数
7
解决办法
21万
查看次数

将Pandas Column转换为DateTime

我在pandas DataFrame中有一个字段,它以字符串格式导入.它应该是一个日期时间变量.如何将其转换为日期时间列,然后根据日期进行过滤.

例:

  • DataFrame名称:raw_data
  • 专栏名称:Mycol
  • 列中的值格式:'05SEP2014:00:00:00.000'

python datetime pandas

184
推荐指数
7
解决办法
34万
查看次数

将y轴格式化为百分比

我有一个用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轴上使用百分比

python plot matplotlib pandas

86
推荐指数
7
解决办法
9万
查看次数

如何在pandas DataFrame中按列设置dtypes

我想将一些数据带入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)它应用浮动格式到两列.

最后,我想能够传递一个数据类型列表,就像我可以传递一个列名列表一样.

python types pandas

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

`pip freeze`打破包安装

我正在使用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)

python egg pip freeze

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

循环列表中的每个项目

我有一本字典:

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)

似乎有一种简单的方法可以做到这一点,如果我有三个项目,它会扩展.有点像动态循环次数.感觉像我错过了一个明显的方法来做到这一点......

python dictionary cartesian-product

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

将SAS数字转换为python datetime

这可能是一个简单的解决方案,但我将如何转换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'这样的数字

python format datetime pandas

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

在pandas rank方法中强制增加

我在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方法执行此操作,还是必须使用某些排序和循环逻辑手动执行此操作?

python rank pandas

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

Matplotlib中的叠加轮廓图

我需要比较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)

matplotlib contour

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

将标准注销到气流中的文件

我想将标准从我的 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 运算符中打印到的位置?

此外,我在脚本中使用了数百个打印语句,因此在这种情况下修改每个语句是不切实际的。

stdout airflow

5
推荐指数
0
解决办法
1034
查看次数