小编Dav*_*son的帖子

在haskell中解析二进制文件的性能很差

我有一组打包到文件中的二进制记录,我正在使用Data.ByteString.Lazy和Data.Binary.Get读取它们.使用我当前的实现,8Mb文件需要6秒才能解析.

import qualified Data.ByteString.Lazy as BL
import Data.Binary.Get

data Trade = Trade { timestamp :: Int, price :: Int ,  qty :: Int } deriving (Show)

getTrades = do
  empty <- isEmpty
  if empty
    then return []
    else do
      timestamp <- getWord32le          
      price <- getWord32le
      qty <- getWord16le          
      rest <- getTrades
      let trade = Trade (fromIntegral timestamp) (fromIntegral price) (fromIntegral qty)
      return (trade : rest)

main :: IO()
main = do
  input <- BL.readFile "trades.bin" 
  let trades = runGet getTrades …
Run Code Online (Sandbox Code Playgroud)

performance haskell binaryfiles

15
推荐指数
2
解决办法
1296
查看次数

在pandas聚合函数中创建多个列

我想在重新采样pandas DataFrame时创建多个列,就像内置的ohlc方法一样.

def mhl(data):
    return pandas.Series([np.mean(data),np.max(data),np.min(data)],index = ['mean','high','low'])

ts.resample('30Min',how=mhl)
Run Code Online (Sandbox Code Playgroud)

死了

Exception: Must produce aggregated value
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

python time-series pandas

9
推荐指数
1
解决办法
3539
查看次数

重新采样日内大熊猫DataFrame,无需添加新的日期

我想在不添加新的日子的情况下对一些日内数据进行下采样

df.resample('30Min')
Run Code Online (Sandbox Code Playgroud)

会增加不受欢迎的周末等.有没有办法解决?

python time-series pandas

7
推荐指数
1
解决办法
4636
查看次数

控制seaborn中的网格线间距

我想在seaborn图表上更改水平网格线的间距,我尝试设置样式没有运气:

seaborn.set_style("whitegrid", {
    "ytick.major.size": 0.1,
    "ytick.minor.size": 0.05,
    'grid.linestyle': '--'
 })

bar(range(len(data)),data,alpha=0.5)
plot(avg_line)
Run Code Online (Sandbox Code Playgroud)

网格线自动设置我试图覆盖刻度尺寸

在此输入图像描述

有什么建议?谢谢!

graph matplotlib seaborn

7
推荐指数
2
解决办法
5258
查看次数

禁用 DashTable 中活动单元格的突出显示

如何停止在破折号数据表中突出显示的活动单元格(最后单击的单元格)?

在此处输入图片说明

plotly-dash

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

如何改善滚动总和实施?

如何改进以下滚动总和实施?

type Buffer  = State BufferState (Maybe Double)
type BufferState = ( [Double] , Int, Int )

-- circular buffer    
buff :: Double -> Buffer 
buff newVal = do
  ( list, ptr, len) <- get
  -- if the list is not full yet just accumulate the new value
  if length list < len
    then do
      put ( newVal : list , ptr, len)
      return Nothing
    else do
      let nptr = (ptr - 1) `mod` len
          (as,(v:bs)) = splitAt ptr list …
Run Code Online (Sandbox Code Playgroud)

haskell state-monad

0
推荐指数
1
解决办法
236
查看次数