首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么非常相似的数据帧的熊猫图如此不同?

为什么非常相似的数据帧的熊猫图如此不同?
EN

Stack Overflow用户
提问于 2018-02-02 03:45:50
回答 3查看 48关注 0票数 0

以下代码片段在打印时部分显示,执行时没有任何问题:

代码语言:javascript
运行
复制
import pandas as pd
from   matplotlib import pyplot as plt
import numpy as np
import csv

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 3), index=ts.index, columns=list('ABC'))
print (df)
print (df.index)
print (df.columns)
#df = df.cumsum()   # this also is ok
df.plot()
plt.show()

                   A         B         C
2000-01-01  0.882544 -0.841398  1.745238
2000-01-02  1.798310  1.049662 -0.115292
2000-01-03  1.223243 -0.086322 -0.565204
2000-01-04 -0.587905 -0.609485  0.296248
2000-01-05 -1.603916 -0.397210  0.007550
2000-01-06 -0.821833  0.112760 -0.082558   
     ...
     ...
2002-09-22 -0.530537  0.373358  2.920919
2002-09-23  0.121657  0.634864 -0.964255
2002-09-24  1.153799  2.468507 -2.087136
2002-09-25 -1.079853  0.684926  1.556522
2002-09-26 -2.163454  0.874373  1.942925

[1000 rows x 3 columns]
DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04',
               '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-08',
               '2000-01-09', '2000-01-10',
               ...
               ...
               '2002-09-17', '2002-09-18', '2002-09-19', '2002-09-20',
               '2002-09-21', '2002-09-22', '2002-09-23', '2002-09-24',
               '2002-09-25', '2002-09-26'],
              dtype='datetime64[ns]', length=1000, freq='D')
Index(['A', 'B', 'C'], dtype='object')

并生成一个很好的图(正如预期的那样)

但是,当我执行以下代码时

代码语言:javascript
运行
复制
import datetime

        df = pd.read_csv(fullFileNameOutCSV, header=0, names=headerCSV,usecols=['SEK/EUR', 'SEK/DKK', 'SEK/NOK'])        
        pd.Timedelta(datetime.timedelta(days=1))
        df.index = pd.date_range('2000-01-01',periods=4888)
        df.index = pd.to_datetime(df.index)
        print (df)
        print (df.index)
        print (df.columns)   
        df.plot()
        plt.show() 

            SEK/EUR  SEK/DKK  SEK/NOK
2000-01-01   9.4696   7.4501   8.8550
2000-01-02   9.4025   7.4495   8.7745
2000-01-03   9.3050   7.4452   8.7335
2000-01-04   9.1800   7.4431   8.6295
2000-01-05   9.1650   7.4433   8.5900
2000-01-06   9.0985   7.4433   8.5585
     ...
     ...
2013-05-14   9.8188   7.4444   9.5858
2013-05-15   9.8005   7.4428   9.5655
2013-05-16   9.7823   7.4427   9.5548
2013-05-17   9.7825   7.4415   9.5628
2013-05-18   9.7645   7.4419   9.5620
2013-05-19   9.8030   7.4428   9.5705

[4888 rows x 3 columns]
DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04',
               '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-08',
               '2000-01-09', '2000-01-10',
               ...
               ...
               '2013-05-10', '2013-05-11', '2013-05-12', '2013-05-13',
               '2013-05-14', '2013-05-15', '2013-05-16', '2013-05-17',
               '2013-05-18', '2013-05-19'],
              dtype='datetime64[ns]', length=4888, freq='D')

剧情并不是我所期望的。

我在这段代码上尝试了许多不同的变体,以获得合理的绘图,但到目前为止,我还没有找到能够生成与第一个绘图类似的绘图的代码。请注意,垂直轴比例-是什么导致的?为什么我得不到与第一个代码片段类似的图?

EN

回答 3

Stack Overflow用户

发布于 2018-02-02 08:28:04

在修改字符串以输出到csv文件的位置插入了以下代码,该代码工作正常- Eureka :-)

代码语言:javascript
运行
复制
if '.' not in nums[3]:
    # Append '.00' to integer strings
    nums[3] = nums[3] + '.00'  
票数 0
EN

Stack Overflow用户

发布于 2018-02-02 09:04:02

以下是修改代码后的校正后的图

票数 0
EN

Stack Overflow用户

发布于 2018-02-03 04:28:25

我使用下面的函数来计算每种货币的均值和方差。如果我一直在使用,这3个异常值很容易就会被注意到-我现在就是。

代码语言:javascript
运行
复制
def updateMeanVar(x,k,mu,vr):
    '''
     Purpose: Update the estimates for the mean and variance
              (recursive algorithm)              
       Inputs:
          x -- new value (x_k)                 x_1,x_2,...
          k -- counter (index) for new value   1,2,
         mu -- previously estimated mean (x_k not included)
         vr -- previously estimated variance (x_k not included)
       Otputs:
         mu -- updated mean     (with x_k included)
         vr -- updated variance (with x_k included)

      Refs.
        Donald E. Knuth. Seminumerical  Algorithms, volume 2 of The  Art  of     Computer  Programming,
        chapter 4.2.2, page 232. Addison-Wesley, Boston, third edition, 1998.
    '''
    delta = x - mu
    mu += delta/k
    vr += delta*(x - mu)  
    return mu,vr

以下是欧洲中央银行(ECB)货币汇率的部分输出,包括今天的估计。

代码语言:javascript
运行
复制
Processing ECB exchange rates ...
Saving data ...

ECB working days:  4889
strt date: 1999-01-04
stop date: 2018-02-02
Exchange rates stored in:
  Sweden  (SEK/EUR): E:/Data/ECB_ExchangeRates/Sweden/Rates.txt  (mean=  9.235,std=  0.496)
  Denmark (DKK/EUR): E:/Data/ECB_ExchangeRates/Denmark/Rates.txt (mean=  7.448,std=  0.011)
  Norway  (NOK/EUR): E:/Data/ECB_ExchangeRates/Norway/Rates.txt  (mean=  8.238,std=  0.565)
All rates stored in: E:/Data/ECB_ExchangeRates/AllRates.txt
                     E:/Data/ECB_ExchangeRates/AllRates.csv

和摘要图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48570596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档