08把数据放在空的DataFrame中
现在我们已经有了一个空的DataFrame,而且index已经被改造过了,现在我们就SPY数据放到这个空的DataFrame中。我们采取以下代码。
import pandas as pd
def test_run():
start_date = '2013-01-01'
end_date = '2013-01-05'
dates = pd.date_range(start_date,end_date)
df1 = pd.DataFrame(index = dates)
print df1
dfSPY = pd.read_csv("data/SPY.csv")
print dfSPY
df1 = df1.join(dfSPY)
print df1if __name__ == '__main__':
test_run()
文章图片
运行结果 结果显示,我们并没有将任何一个SPY的值放入到dataframe中,为什么会出现的这个情况?
1.原来SPY的index并没有经过改造,所以两者并没有什么交集可以加入。dfSPY拥有的索引,还是像原来的整数索引。我们在可以用以下代码,改造一下dfSPY的所以内容.
dfSPY = pd.read_csv("data/SPY.csv",index_col="Date",parse_date True)
新增加的参数设置,可以让原本的数据的日期作为index,parse_date设置为True,是为了解析我们的日期是符合pandas的默认设置的。
文章图片
重新运行的结果 【08把数据放在空的DataFrame中】我们发现不开始的日期都会显示为NaN,而且我们也并不需要关注这么多指标,我们要进一步优化。
import pandas as pd
def test_run():
start_date = '2013-01-01'
end_date = '2013-01-07'
dates = pd.date_range(start_date,end_date)
df1 = pd.DataFrame(index = dates)
#print df1
dfSPY = pd.read_csv("data/SPY.csv",index_col='Date',parse_dates = True,
usecols=['Date','Adj Close'],na_values=['nan'])
#print dfSPY
df1 = df1.join(dfSPY)
df1=df1.dropna()
print df1if __name__ == '__main__':
test_run()
usecols=['Date','Adj Close'],na_values=['nan']
和df1=df1.dropna()
多使用了这两个语句。首先usecols=['Date','Adj Close']
是用来提取我们需要关注的列的数据。na_values=['nan']
是用"nan"来代替平常看到的缺失值。df1=df1.dropna()
是用来把确实的行去掉。运行代码之后,我们就可以获得一个比较简洁的结果了。
文章图片
运行结果
在完成join的时候,我们还有选择有其他的方式的组合。例如我们有一个交集的方式就可以直接省去去掉na的步骤了。
import pandas as pd
def test_run():
start_date = '2013-01-01'
end_date = '2013-01-07'
dates = pd.date_range(start_date,end_date)
df1 = pd.DataFrame(index = dates)
#print df1
dfSPY = pd.read_csv("data/SPY.csv",index_col='Date',parse_dates = True,
usecols=['Date','Adj Close'],na_values=['nan'])
#print dfSPY
df1 = df1.join(dfSPY,how = "inner")
print df1if __name__ == '__main__':
test_run()
同样可以获得相同的结果!
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 使用协程爬取网页,计算网页数据大小
- Java|Java基础——数组
- Python数据分析(一)(Matplotlib使用)
- Jsr303做前端数据校验
- Spark|Spark 数据倾斜及其解决方案
- 数据库设计与优化
- 爬虫数据处理HTML转义字符
- 数据库总结语句
- MySql数据库备份与恢复