如何使用pandas分析金融数据
【摘要】pandas是数据分析师分析数据最常用的三方库之一,结合matplotlib,非常强大。
首先我们收集一些数据。
从东方财富客户端导出券商信托板块2018年11月1日的基础行情和财务数据。分别保存为zhengquan1.csv和zhengquan2.csv,文件可以从本文附件中下载。
导入pandas和读取csv文件
import pandas as pd
#解析基础行情csv
df1 = pd.read_csv(u'zhengquan1.csv',sep=',', encoding='utf-16')
df1.head()
pd.read_csv可以将csv文件解析为pandas的DataFrame对象。导出的文件是由utf-16编码的,要加encoding参数。
df1.head()可以取DataFrame前5行。
可以看出pandas结合jupyter可以很直观的看到全部数据的大致情况。
DataFrame的行列名可以直接用index、columns获取,后面我们会慢慢介绍。
df1.columns
df1.index.values
我们看到有一列名为’Unnamed: 3‘的数据列,这一列是不需要的数据,我们希望将其删除,可以使用drop方法。
df1.drop('Unnamed: 3',inplace=True, axis=1)
df1.head(3)
drop方法中有两个参数,inplace=True代表处理后的DataFrame替换原来的DataFrame;axis=1代表处理列数据。
接下来我们试试将df1中的第一行删除。
df1.drop(0,inplace=True)
df1.head(3)
可以看出,我们这次没有使用axis参数,因为axis默认为0,代表处理行数据,可以省略。
上面的一些操作让我们对数据做了一些清洗。
接下来我们想提取一些我们比较关心的数据,例如提取'代码'、'名称'、'最新'、'换手'、'市盈率'、'市净率'、'总市值'、'流通市值'这几列.
df1_clean = df1[[u'代码',u'名称',u'最新',u'换手',u'市盈率',u'市净率',u'总市值',u'流通市值']]
df1_clean.head()
这时,我们想通过市净率来排序,看看市净率最低的几家券商信托是哪些。我们可以借助sort_values来实现:
df1_clean.sort_values(u'市净率').head()
sort_values方法有一个ascending参数,我们可以设置升序或者降序。
df1_clean.sort_values(u'最新',ascending=False).head()
我们看到DataFrame中有些值是字符串和其他字符,我们想要批量将其删除。向大家介绍apply函数:
def fn(x):
try:
x[u'市盈率'] = pd.to_numeric(x[u'市盈率'].split(' ')[0])
x[u'总市值'] = pd.to_numeric(x[u'总市值'][:-2])
x[u'流通市值'] = pd.to_numeric(x[u'流通市值'][:-2])
x[u'换手'] = pd.to_numeric(x[u'换手'][:-1])
return x
except:
pass
df1_clean = df1_clean.apply(func=fn,axis=1)
df1_clean.head()
上述代码将亏损的股票剔除出了DataFrame。为了进一步清洗,将存在nan的数据行删除。
df1_clean.dropna(inplace=True)
接下来我们可以将DataFrame中的一些数据借助matplotlib画出柱状图:
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,24)
df1_clean.plot(x=u'代码',y=u'市盈率',kind='barh');
pandas用于金融分析还有很多个性化的手段,这次我们主要讲了讲数据的清洗和处理。
后面我们会接着介绍pandas的更多使用技巧,如果想了解环境的安装,可以看我前面的文章:
ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务
来源:华为云社区 作者:Edison
如何使用pandas分析金融数据的更多相关文章
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...
- 数据分析(7):pandas介绍和数据导入和导出
前言 Numpy Numpy是科学计算的基础包,对数组级的运算支持较好 pandas pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计 ...
- [数据清洗]-使用 Pandas 清洗“脏”数据
概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...
- [数据清洗]- Pandas 清洗“脏”数据(二)
概要 了解数据 分析数据问题 清洗数据 整合代码 了解数据 在处理任何数据之前,我们的第一任务是理解数据以及数据是干什么用的.我们尝试去理解数据的列/行.记录.数据格式.语义错误.缺失的条目以及错误的 ...
- [数据清洗]- Pandas 清洗“脏”数据(三)
预览数据 这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容.具体步骤: 导入 Pandas 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径) D ...
- python爬虫项目-爬取雪球网金融数据(关注、持续更新)
(一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...
- 用python探索和分析网络数据
Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...
- [数据清洗]-Pandas 清洗“脏”数据(一)
概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...
- Pandas透视表处理数据(转)
手把手教你用Pandas透视表处理数据(附学习资料) 2018-01-06 数据派THU 来源:伯乐在线 - PyPer 本文共2203字,建议阅读5分钟.本文重点解释pandas中的函数pivot ...
随机推荐
- NOIP模拟 38
liu_runda的题! 错过辽QAQ T1虽然没用题解的损益法,但是用高精%还能过.. 没想到敲完就过编译了,还以为要调一天呢 高精度的阴影没了- T2的思路很巧妙 首先一个区间最多有一种颜色占一半 ...
- 1. 彤哥说netty系列之开篇(有个问卷调查)
你好,我是彤哥,本篇是netty系列的第一篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 本文主要讲述netty系列的整体规划,并调查一下大家喜欢的学习方式. 知识点 ne ...
- 002.Kubernetes简单入门实例
一 环境准备 1.1 基础环境 Kubernetes模式:单机版 系统环境:CentOS 7/172.24.9.157 部署方式:yum快速部署 其他设置:开启NTP.关闭防火墙及SELinux 二 ...
- UML简明使用
1.继承 空心三角+实线 2.实现接口 空心三角+虚线 3.关联 箭头+实线 4.聚合 空心菱形+实线+箭头 5.组合 实心菱形+实线+箭头 6.依赖 虚线+箭头 7.关联.聚合.组合.依赖的区别 关 ...
- 理解Spark运行模式(三)(STANDALONE和Local)
前两篇介绍了Spark的yarn client和yarn cluster模式,本篇继续介绍Spark的STANDALONE模式和Local模式. 下面具体还是用计算PI的程序来说明,examples中 ...
- gitbook的插件配置
原生的gitbook样式比较单一,美观度和功能欠佳,可通过相关插件进行拓展. 插件地址:https://plugins.gitbook.com/ 主目录下新建book.json: { "au ...
- 【Java】面向对象之继承
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可.其中如图中所示,食草动物.食肉动物.兔子.羊.狮子.豹都可以称为子类,动物类称为父 ...
- 领扣(LeetCode)数字转换为十六进制数 个人题解
给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字母(a-f)都必须是小写. 十六进制字符串中不能包含多余的前导零.如果要转化的数 ...
- python:类1——类和对象基础
一.OO = Object Oriented 面向对象 OOP面向对象编程.OOA面向对象分析.OOD面向对象设计 二.属性+方法——>类(数据和函数) class Turtle(): #类名约 ...
- beego框架学习--beego orm映射
什么是ORM 即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作 ...