小编Ant*_*pov的帖子

如何在matplotlib中的x轴上显示日期和时间

我想在matplotlib中为x轴分配完整的日期和时间,但是使用自动缩放我只能获得时间或日期,但不能同时获得两者.以下代码:

import matplotlib.pyplot as plt
import pandas as pd

times = pd.date_range('2015-10-06', periods=500, freq='10min')

fig, ax = plt.subplots(1)
fig.autofmt_xdate()
plt.plot(times, range(times.size))
plt.show()
Run Code Online (Sandbox Code Playgroud)

在x轴上,我只得到没有任何日期的时间,因此难以区分测量.

我认为它是matplotlib.dates.AutoDateFormatter中的matplotlib中的一些选项,但我找不到任何可以允许我更改该自动缩放的选项.

在此输入图像描述

python matplotlib

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

连接具有相同id的pandas DataFrame行

说我有一个pandas DataFrame,例如:

   A  B  id
0  1  1   0
1  2  1   0
2  3  2   1
3  0  2   1
Run Code Online (Sandbox Code Playgroud)

假设我想组合具有相同id的行,以便行中的其他元素放在一个列表中,以便上面的数据帧将变为:

     A       B     id
0  [1, 2]  [1, 1]   0
1  [3, 0]  [2, 2]   1
Run Code Online (Sandbox Code Playgroud)

作为前两行,最后两行具有相同的id.大熊猫有功能吗?我知道pandas groupby命令,但我希望返回类型也是一个数据帧.谢谢.

python dataframe pandas

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

将mask(boolean)数组转换为x,y坐标列表

我有一个'mask'(布尔)2D数组,我想把它转换成一个坐标列表.什么是适当的numpythonic方式呢?

输入将是这样的:

[[False,False,True],
 [False,True,False]]
Run Code Online (Sandbox Code Playgroud)

并给出上述输入,输出应为:

[(0,2),(1,1)]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

在共享索引上加入Pandas Dataframes

我有3个DataFrames具有不同数量的共享索引.例如:

>>> df0=pd.DataFrame(index=pd.MultiIndex.from_product([[1,2,3,4],[2011,2012],['A','B']], names=['Season','Year','Location']))
>>> df0['Value0']=np.random.randint(1,100,len(df0))
>>> 
>>> df1=pd.DataFrame(index=pd.MultiIndex.from_product([[2011,2012],['A','B']], names=['Year','Location']))
>>> df1['Value1']=np.random.randint(1,100,len(df1))
>>> 
>>> df2=pd.DataFrame(index=['A','B'])
>>> df2.index.name='Location'
>>> df2['Value2']=np.random.randint(1,100,len(df2))
>>> df0
                      Value0
Season Year Location        
1      2011 A             18
            B             63
       2012 A             88
            B             30
2      2011 A             35
            B             60
       2012 A             61
            B              4
3      2011 A             70
            B              9
       2012 A             11
            B             38
4      2011 A             68
            B             57
       2012 A             13
            B             35
>>> df1
               Value1
Year Location        
2011 A             22
     B …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

将多索引的一个级别拆分为列

所以我有一个数据框:

df = pd.DataFrame([["foo","fizz",1],["foo","fizz",2],["foo","buzz",3],["foo","buzz",4],["bar","fizz",6],["bar","buzz",8]],columns=["a","b","c"])

       a    b     c
    0  foo  fizz  1
    1  foo  fizz  2
    2  foo  buzz  3
    3  foo  buzz  4
    4  bar  fizz  6
    5  bar  buzz  8
Run Code Online (Sandbox Code Playgroud)

我可以分组:

df2 = df.groupby(["a","b"]).sum()

              c
    a   b
    bar buzz  8
        fizz  6
    foo buzz  7
        fizz  3
Run Code Online (Sandbox Code Playgroud)

哪个太棒了!但我真正需要的不是"c"列,而是两列,"foo"和"bar":

          foo  bar
    b
    buzz  7    8
    fizz  3    6
Run Code Online (Sandbox Code Playgroud)

有人可以建议一种方法吗?我试着搜索,但我想我没有正确的术语,所以我找不到任何东西.

python pandas

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

在Python中联系跟踪 - 使用时间序列

假设我有时间序列数据(x轴上的时间,yz平面上的坐标).

给定受感染用户的种子集,我想dt时间内获取与种子集中的点之间的距离的所有用户.这基本上只是联系人追踪.

什么是实现这一目标的聪明方法?

天真的方法是这样的:

points_at_end_of_iteration = []
for p in seed_set:
    other_ps = find_points_t_time_away(t)
    points_at_end_of_iteration += find_points_d_distance_away_from_set(other_ps)
Run Code Online (Sandbox Code Playgroud)

什么是更聪明的方法 - 最好将所有数据保存在RAM中(虽然我不确定这是否可行).熊猫是个不错的选择吗?我一直在考虑Bandicoot,但它似乎无法为我做到这一点.

如果我能改进这个问题,请告诉我 - 也许它太宽泛了.

编辑:

我认为上面提到的算法是有缺陷的.

这是否更好:

for user,time,pos in infected_set:
    info = get_next_info(user, time) # info will be a tuple: (t, pos)
    intersecting_users = find_intersecting_users(user, time, delta_t, pos, delta_pos) # intersect if close enough to the user's pos/time
    infected_set.add(intersecting_users)
    update_infected_set(user, info) # change last_time and last_pos (described below)
Run Code Online (Sandbox Code Playgroud)

infected_set 我认为应该是一个hashmap {user_id: {last_time: ..., last_pos: …

python time-series python-2.7 pandas

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

安装了sympy,但是没有找到sympy.mpmath

我想在sympy中使用jacobDN功能,所以我python setup.py install成功下载了它.

当我想在文档中使用它时:

>>> from sympy.mpmath import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mpmath
>>> 
Run Code Online (Sandbox Code Playgroud)

从sympy导入的所有东西都是成功的:

>>> from sympy import *
>>> 
Run Code Online (Sandbox Code Playgroud)

然后我单独安装了mpmath,然后我可以使用mpmath的ellipfun.但是mpf显示出令人讨厌的情况:

>>> from mpmath import *
>>> ellipfun('dn',0.5,0.5)
mpf('0.94297242577738571')
>>> 
Run Code Online (Sandbox Code Playgroud)

问题是如何在sympy.mpmath下使用ellipfun?如何检查我的安装漏洞?

以上解决方案是最好的!如果不能,我怎么能像使用普通函数一样在mpmath中使用ellipfun?

成功安装症状的证据

-> ~$ pip show sympy
---
Name: sympy
Version: 0.7.7.dev
Location: /usr/local/lib/python2.7/dist-packages/sympy-0.7.7.dev-py2.7.egg
Requires: mpmath

-> ~$ pip install --upgrade sympy
Requirement already up-to-date: sympy in /usr/local/lib/python2.7/dist-packages/sympy-0.7.7.dev-py2.7.egg
Requirement already …
Run Code Online (Sandbox Code Playgroud)

python sympy mpmath

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

计算numpy数组中列的出现次数

给定一个2 xd维numpy数组M,我想计算M每列的出现次数.也就是说,我正在寻找一般的版本bincount.

到目前为止我尝试过:(1)将列转换为元组(2)使用散列元组(via hash)到自然数(3)numpy.bincount.

这看起来很笨拙.有人知道更优雅高效的方式吗?

python numpy

5
推荐指数
2
解决办法
1817
查看次数

为什么在pandas dataframe列中应用更改dtype

我有以下数据帧:

import pandas as pd
import numpy as np
df = pd.DataFrame(dict(A = np.arange(3), 
                         B = np.random.randn(3), 
                         C = ['foo','bar','bah'], 
                         D = pd.Timestamp('20130101')))

print(df)

   A         B    C          D
0  0 -1.087180  foo 2013-01-01
1  1 -1.343424  bar 2013-01-01
2  2 -0.193371  bah 2013-01-01
Run Code Online (Sandbox Code Playgroud)

dtypes 对于列:

print(df.dtypes)
A             int32
B           float64
C            object
D    datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)

但在使用apply它们之后所有对象的更改:

print(df.apply(lambda x: x.dtype))
A    object
B    object
C    object
D    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

为什么dtypes强迫反对?我认为apply只应在列中考虑.

pandas 0.17.1
python …

python pandas

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

获取csv文件的最后10000行

在pandas中,我可以pandas.io.parser.read_csv("file.csv", nrows=10000)用来获取csv文件的前10000行.

但是因为我的csv文件很大,并且最后一行比第一行更有意义,所以我想阅读最后10000行.但是,即使我知道文件的长度,这也不是那么容易,因为如果我使用pandas.io.parser.read_csv("file.csv", nrows=10000, skiprows=990000)包含文件头的第一行跳过1000000行csv文件的前990000行,也会被跳过.(header=0skiprows应用之后进行测量,因此它也没有帮助.)

如何从第0行中带有标题的csv文件中获取最后10000行,最好不知道行中文件的长度?

python csv tail pandas

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

标签 统计

python ×10

pandas ×6

dataframe ×2

numpy ×2

csv ×1

matplotlib ×1

mpmath ×1

python-2.7 ×1

sympy ×1

tail ×1

time-series ×1