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

最新文章

  1. boa + ajax + cgi ajax请求cgi
  2. Android—android与js交互以及相互传参
  3. 使用LIBSVM工具实现样本分类预测——MatLab
  4. 重建 windows 图标缓存
  5. 【翻译习作】 Windows Workflow Foundation程序开发-第一章03
  6. Jquery数组操作技巧
  7. OpenGL学习之路(二)
  8. Remoting
  9. Java和.NET的GZIP压缩功能对比
  10. 长沙Uber优步司机奖励政策(1月25日~1月31日)
  11. php数组存到文件的实现代码
  12. FreeCodeCamp:Title Case a Sentence
  13. 在Java中如何使用jdbc连接Sql2008数据库(转)
  14. openstack私有云布署实践【0 前言】
  15. g4e基础篇#6 了解Git历史记录
  16. uva11183 最小树形图模板题
  17. js 实现的简易计算器
  18. CCCC L2-002. 链表去重
  19. HDU 2612 Find a way bfs 难度:1
  20. Metasploit 使用基础

热门文章

  1. 当 Redis 发生高延迟时,到底发生了什么
  2. Codeforces Round #599 (Div. 2) E. Sum Balance
  3. LINUX 内核移植以及网卡驱动添加
  4. PHP yaf显示错误提示
  5. 4、Vim编辑器与正则表达式-面试题
  6. VMware安装Ubuntu 16.04.4 LTS
  7. 力扣(LeetCode)键盘行 个人题解
  8. selenium抓取视频
  9. vue—自定义指令
  10. SCAU-1144 数星星-HDU-1166-树状数组的应用