我正在尝试上传一个250MB的csv文件.基本上有400万行和6列时间序列数据(1分钟).通常的程序是:
location = r'C:\Users\Name\Folder_1\Folder_2\file.csv'
df = pd.read_csv(location)
Run Code Online (Sandbox Code Playgroud)
这个过程大约需要20分钟!!! 非常初步我已经探索了以下选项
我想知道是否有人比较了这些选项(或更多)并且有明显的赢家.如果没有人回答,将来我会发布我的结果.我现在没有时间.
是否有可能获得dict
类似于pandas的Python 的部分视图df.tail()/df.head()
.假设你有一个很长的dict
,你只想检查一些元素(开头,结尾等)dict
.就像是:
dict.head(3) # To see the first 3 elements of the dictionary.
{[1,2], [2, 3], [3, 4]}
Run Code Online (Sandbox Code Playgroud)
谢谢
给定一个如下所示的数据框:
A B
2005-09-06 5 -2
2005-09-07 -1 3
2005-09-08 4 5
2005-09-09 -8 2
2005-09-10 -2 -5
2005-09-11 -7 9
2005-09-12 2 8
2005-09-13 6 -5
2005-09-14 6 -5
Run Code Online (Sandbox Code Playgroud)
是否有pythonic方法来创建像这样的2x2矩阵:
1 0
1 a b
0 c d
Run Code Online (Sandbox Code Playgroud)
哪里:
a =列数A和B的相应元素均为正数.
b =列A的相应元素在B列中为正和负的obs数.
c =列A中相应元素为负且在B列中为正的obs数.
d =列数A和B的相应元素均为负数的obs数.
对于此示例,输出将是:
1 0
1 2 3
0 3 1
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个正常的df.index,我想补充几个小时.
In [1]: test[1].index
Out[2]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-03-11, ..., 2014-08-14]
Length: 52, Freq: None, Timezone: None
Run Code Online (Sandbox Code Playgroud)
这是第一个元素的样子:
In [1]: test[1].index[0]
Out[2]: Timestamp('2010-03-11 00:00:00')
Run Code Online (Sandbox Code Playgroud)
所以我试着添加小时:
In [1]: test[1].index[0] + pd.tseries.timedeltas.to_timedelta(16, unit='h')
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
Out[2]: Timestamp('2010-03-11 00:00:00.000000016')
Run Code Online (Sandbox Code Playgroud)
但我想得到这个:
Out[2]: Timestamp('2010-03-11 16:00:00')
Run Code Online (Sandbox Code Playgroud)
我错过了什么?环境是Anaconda(最新)Python 2.7.7,iPython 2.2
非常感谢
我们的想法是能够在笔记本中构建和使用GUI,因此使用具有大量参数的长函数比仅在笔记本中键入字符更有效.
显然不具体,但如果有人可以指出一些可能有帮助的库,项目,链接或任何资源.
我正在尝试在一个月的最后一个条件下对DataFrame进行子集化.我用了:
df['Month_End'] = df.index.is_month_end
sample = df[df['Month_End'] == 1]
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我正在处理股票市场数据,因此我错过了实际月末在周末的所有实例,我需要一种方法来选择"月中的最后一个工作日".
给出两个不同的df:
'一个'
a b
2016-11-21 2 1
2016-11-22 3 4
2016-11-23 5 2
2016-11-24 6 3
2016-11-25 6 3
Run Code Online (Sandbox Code Playgroud)
'B'
a b
2016-11-21 3 0
2016-11-22 1 0
2016-11-23 1 6
2016-11-24 1 5
2016-11-25 0 2
Run Code Online (Sandbox Code Playgroud)
如何创建此形状的"多级"数据框:
'C'
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
Run Code Online (Sandbox Code Playgroud)
*index是'datatime'对象
谢谢
我正在尝试使用rollapply与需要2个参数的公式.据我所知,唯一的方法(除非你从头开始创建公式)来计算kendall tau相关性,包括标准的平局修正是:
>>> import scipy
>>> x = [5.05, 6.75, 3.21, 2.66]
>>> y = [1.65, 26.5, -5.93, 7.96]
>>> z = [1.65, 2.64, 2.64, 6.95]
>>> print scipy.stats.stats.kendalltau(x, y)[0]
0.333333333333
Run Code Online (Sandbox Code Playgroud)
我也知道rollapply的问题并采取两个参数,如下所述:
尽管如此,我仍在努力寻找一种方法来对具有多列的数据帧进行kendalltau计算.
我的数据框是这样的
A = pd.DataFrame([[1, 5, 1], [2, 4, 1], [3, 3, 1], [4, 2, 1], [5, 1, 1]],
columns=['A', 'B', 'C'], index = [1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)
试图创建一个这样做的功能
In [1]:function(A, 3) # A is df, 3 is the rolling window
Out[2]:
A B …
Run Code Online (Sandbox Code Playgroud) 给定具有时间序列的数据框,如下所示:
Close
2015-02-20 14:00:00 1200.1
2015-02-20 14:10:00 1199.8
2015-02-21 14:00:00 1199.3
2015-02-21 14:10:00 1199.0
2015-02-22 14:00:00 1198.4
2015-02-22 14:10:00 1199.7
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱索引的'秒',看起来像这样:
Close
2015-02-20 14:00 1200.1
2015-02-20 14:10 1199.8
2015-02-21 14:00 1199.3
2015-02-21 14:10 1199.0
2015-02-22 14:00 1198.4
2015-02-22 14:10 1199.7
Run Code Online (Sandbox Code Playgroud)
谢谢
假设您有一个1分钟时间序列的数据框,其中包含索引,4列和400万行。当您尝试执行以下操作时:
conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}
df1 = df.resample('5Min', how=conversion)
Run Code Online (Sandbox Code Playgroud)
这花费了荒谬的时间(20-30分钟)。我如何加快这个过程?
熊猫18,Python 2.7
python ×10
dataframe ×8
pandas ×8
python-2.7 ×4
time-series ×3
csv ×1
datetime ×1
dictionary ×1
indexing ×1
jupyter ×1
multi-level ×1
numpy ×1
python-3.x ×1
resampling ×1
scipy ×1