【摘要】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服务

证券数据.zip

来源:华为云社区 作者:Edison

如何使用pandas分析金融数据的更多相关文章

  1. Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

    第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...

  2. 数据分析(7):pandas介绍和数据导入和导出

    前言 Numpy Numpy是科学计算的基础包,对数组级的运算支持较好 pandas pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计 ...

  3. [数据清洗]-使用 Pandas 清洗“脏”数据

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  4. [数据清洗]- Pandas 清洗“脏”数据(二)

    概要 了解数据 分析数据问题 清洗数据 整合代码 了解数据 在处理任何数据之前,我们的第一任务是理解数据以及数据是干什么用的.我们尝试去理解数据的列/行.记录.数据格式.语义错误.缺失的条目以及错误的 ...

  5. [数据清洗]- Pandas 清洗“脏”数据(三)

    预览数据 这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容.具体步骤: 导入 Pandas 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径) D ...

  6. python爬虫项目-爬取雪球网金融数据(关注、持续更新)

    (一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...

  7. 用python探索和分析网络数据

    Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...

  8. [数据清洗]-Pandas 清洗“脏”数据(一)

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  9. Pandas透视表处理数据(转)

    手把手教你用Pandas透视表处理数据(附学习资料) 2018-01-06 数据派THU 来源:伯乐在线 -  PyPer 本文共2203字,建议阅读5分钟.本文重点解释pandas中的函数pivot ...

随机推荐

  1. [专题总结]矩阵树定理Matrix_Tree及题目&题解

    专题做完了还是要说两句留下什么东西的. 矩阵树定理通俗点讲就是: 建立矩阵A[i][j]=edge(i,j),(i!=j).即矩阵这一项的系数是两点间直接相连的边数. 而A[i][i]=deg(i). ...

  2. CSPS模拟 44

    状态不是很好吧 这套和前边是一套的, skyh在我旁边AK,好像开了三个对拍又在拼小人 T3 正解没调出来,暴力又忘交了qwq 当时心情都要爆炸了 T1 区间$gcd$乘区间长度的最大值 暴力是$n^ ...

  3. 6.1Hadoop属性Configuration配置API

    6.1  Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值. (1)   xml配置文件的格式 <?x ...

  4. vue , debounce 使用

    有时候不想直接在methods中的方法前面加debounce, getFullName: debounce(function() { console.log('my fullname is chent ...

  5. vue学习笔记(五)条件渲染和列表渲染

    前言 在众多的编程语言中,我们的基础语法总是少不了一些专业语法,比如像定义变量,条件语句,for循环,数组,函数等等,vue.js这个优秀的前端框架中也有同样的语法,我们换一个名词,将条件语句改成专业 ...

  6. Hazel,自动整理文件,让你的 Mac 井井有条

    原文地址 https://sspai.com/post/35225 让我们从实际需求出发,看看问题出在哪里,并在此基础上认识和学习使用 Hazel. 电脑随着使用时间的增长,其中的文件也在疯狂的增长, ...

  7. map集合中哪些是线程安全的

    为什么HashMap是线程不安全的 总说 HashMap 是线程不安全的,不安全的,不安全的,那么到底为什么它是线程不安全的呢?要回答这个问题就要先来简单了解一下 HashMap 源码中的使用的存储结 ...

  8. IDEA+JSP+Servlet+Tomcat简单的登录示例

    1.用IDEA新建Java WEB项目并配置Tomcat 这一部分可以参考之前的一篇随笔 https://www.cnblogs.com/lbhym/p/11496610.html 2.导入Servl ...

  9. nyoj 17-单调递增最长子序列 && poj 2533(动态规划,演算法)

    17-单调递增最长子序列 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:21 submit:49 题目描述: 求一个字符串的最长递增子序列的长度 如 ...

  10. nyoj 10 skiing (DFS)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...