Python:随着日期字符串被传递到字典中 - 值混乱

时间:2015-02-04 16:53:02

标签: dictionary excel-2010 export-to-csv opencsv

当我从我的计算机上的excel文件中提取日期数据时,该文件列为:“10/1/10” - 并存储在数组dData中,并且日期的数字版本存储在nData为:734046,因此当您致电dData[0]时,它会返回"10/1/10",当您致电nData时,会返回734046

无论其

我在10/1/10传递的粗体代码返回735536,这不是按时间顺序排列的确切键值对。

import numpy as np
import pandas as pd 
import xlrd
import csv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
import time
import random
import statistics
import numpy
from numpy.random import normal
from scipy import stats

dData = [] #Date in string format - Month/Day/Year

pData = [] #Date in float format - Value.Decimals

nData = [] #Data in Dates in int - Formatted Date Data for plotting in Matpl

def loadData(dates, prices, numDates):

dateDictionary = {} # empty dictionary that will contain string dates to number dates

numDateToPrice = {} # empty dictionary that will contain number dates to string dates

nestedDictionary = {} # empty dictionary that will contain a nested dictionary str date : {numbertodate: price} 

with open('/Users/dvalentin/Code/IndividualResearch/CrudeOilFuturesAll.csv', 'rU') as csvfile: #This is where I pull data from an excel file on my comp
    reader = csv.reader(csvfile,  delimiter=',')
    for row in reader:
        dates.append(row[0])
        numDates.append(row[1])
        prices.append(row[2])

**for x in dates:
    for x in numDates:
        dateDictionary[x] = y 

  print dateDictionary**

for x in numDates[x]:
    for y in prices[y]:
        numDateToPrice[x] = y 

plt.plot_date(x=numDates, y=prices, fmt="r-")
plt.plot()
plt.title("Crude Oil Futures")
plt.ylabel("Closing Price") 
plt.grid(True)
plt.show()

1 个答案:

答案 0 :(得分:0)

import pandas as pd
import datetime as dt

dates = ['10/1/10', '10/2/10','11/3/10','1/4/11']
prices = [12,15,13,18]


df = pd.DataFrame({'dates':dates,'prices':prices})
df = df.set_index(pd.DatetimeIndex(df['dates']))
df = df.drop('dates', axis = 1)

print df.ix['20101002']
print df['20101001':'20101002']
print df['2010']
print df['2010-10']

这似乎是一种更好的方式来组织您的数据,而不是搞乱日期的数字代码。您始终可以为图形参数操作datetimeindex,并根据需要设置样式。但是这个datetimeindex更容易操作数据而不必使用字典。有关日期时间索引的更多信息:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DatetimeIndex.html。希望这可以帮助!