我想在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中的一些选项,但我找不到任何可以允许我更改该自动缩放的选项.
说我有一个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命令,但我希望返回类型也是一个数据帧.谢谢.
我有一个'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) 我有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) 所以我有一个数据框:
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)
有人可以建议一种方法吗?我试着搜索,但我想我没有正确的术语,所以我找不到任何东西.
假设我有时间序列数据(x轴上的时间,yz平面上的坐标).
给定受感染用户的种子集,我想d
在t
时间内获取与种子集中的点之间的距离的所有用户.这基本上只是联系人追踪.
什么是实现这一目标的聪明方法?
天真的方法是这样的:
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: …
我想在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) 给定一个2 xd维numpy数组M,我想计算M每列的出现次数.也就是说,我正在寻找一般的版本bincount
.
到目前为止我尝试过:(1)将列转换为元组(2)使用散列元组(via hash
)到自然数(3)numpy.bincount
.
这看起来很笨拙.有人知道更优雅高效的方式吗?
我有以下数据帧:
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 …
在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=0
在skiprows
应用之后进行测量,因此它也没有帮助.)
如何从第0行中带有标题的csv文件中获取最后10000行,最好不知道行中文件的长度?
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