我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据分析利器之Pandas

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据分析利器之Pandas

Pandas是一个python的开源库,它基于Numpy,提供了多种高性能且易于使用的数据结构。Pandas最初被用作金融数据分析工具而开发,由于它有着强大的功能,目前广泛应用于数据分析、机器学习以及量化投资等。下面来跟随作者一起认识下Pandas吧!

  如何开始

Pandas安装方式十分简单,如果使用Anaconda,Anaconda默认就已经为我们安装好了Pandas,直接拿来用就可以了,推荐使用这种方式。

如果不用Anaconda,只需执行如下命令即可:

pip install pandas

像其他python库一样,使用之前需要导入,通常采用如下方式:

import pandas as pd

2   Pandas数据结构

Pandas的数据结构包括 SeriesDataFrame以及 Panel,这些数据结构基于 Numpy,因此效率很高。其中 DataFrame最为常用,是Pandas最主要的数据结构。所有Pandas数据结构都是值可变的,除 Series外都是大小(Size)可变的, Series大小不可变。

Series

Series是一维的类似的数组的对象,它包含一个数组的数据(任意NumPy的数据类型)和一个与数组关联的索引 。

>>> import pandas as pd>>> import numpy as np>>> s = pd.Series(np.random.randn(4))>>> s0    0.1027801    1.5230012    1.7700673    0.437553dtype: float64

可以看到Pandas默认为我们生成了索引,它的结构如下表所示:

0123
0.1027801.5230011.7700670.437553

我们也可以使用 index关键字为其指定索引:

>>> s = pd.Series(np.random.randn(4), index=['a', 'b', 'c', 'd'])>>> sa   -0.316668b    0.083363c   -0.520227d   -1.024034dtype: float64

DataFrame

DataFrame是二维的、类似表格的对象,是使用最为广泛的Pandas数据结构。DataFrame有行和列的索引,访问便捷。它可以被看作是Series的字典:

>>> data = {'name': ['张三', '李四', '王五'],...         'gender': ['M', 'F', 'M'],...         'height': [174, 160, 185],...         'weight': [80, 48, 70]}>>> frame = pd.DataFrame(data)>>> frame  name gender  height  weight0   张三      M     174      801   李四      F     160      482   王五      M     185      70

结构如下表所示


namegenderheightweight
0张三M17480
1李四F16048
2王五M18570

一方面,我们可以使用 columns关键字指定DataFrame列的顺序,DataFrame的列将会严格按照 columns所指定的顺序排列;另一方面,与Series相同,我们可以使用 index关键字为其指定索引:

>>> frame2 = pd.DataFrame(data, columns=['name', 'gender', 'weight'],...     index=['one', 'two', 'three'])>>> >>> frame2      name gender  weightone     张三      M      80two     李四      F      48three   王五      M      70

需要注意的是,DataFrame的同一列允许有不同类型的值(数字,字符串,布尔等),这便意味着:我们可以将 王五weight设置为 F

  数据访问和遍历

DataFrame支持按下标访问:

  1. >>> frame2.iloc[0]

  2. name      张三

  3. gender     M

  4. weight    80

  5. Name: one, dtype: object

  6. >>> frame2.iloc[0]['weight']

  7. 80

也支持按索引访问:

  1. >>> frame2.loc['two']

  2. name      李四

  3. gender     F

  4. weight    48

  5. Name: two, dtype: object

  6. >>> frame2.loc['two']['name']

  7. '李四'

因此,DataFrame也支持如下两种遍历方式:

>>> for i in range(0, len(frame2)):...     print(frame2.iloc[i])*** 输出结果略 ***
>>> for index, row in frame2.iterrows():...     print(row)*** 输出结果略 ***

  添加和删除列

如果我们想增加一列,也非常方便,如计算BMI指数:

>>> frame['BMI'] = frame['weight']/(frame['height']*frame['height']/10000)>>> frame  name gender  height  weight        BMI0   张三      M     174      80  26.4235701   李四      F     160      48  18.7500002   王五      M     185      70  20.452885

仅需一行代码而无需遍历。

删除列:

>>> del frame2['gender']>>> frame2      name  weightone     张三      80two     李四      48three   王五      70

  添加和删除行

添加行

>>> frame3 = pd.DataFrame([['小红', 46], ['小明', 68]], columns = ['name', 'weight'], index=['four', 'five'])>>> frame4 = frame2.append(frame3)>>> frame4      name  weightone     张三      80two     李四      48three   王五      70four    小红      46five    小明      68

删除行

>>> frame4.drop('four')      name  weightone     张三      80two     李四      48three   王五      70five    小明      68

6    数据筛选

  • 按下标取出前两条记录

>>> frame[:2]  name gender  height  weight       BMI0   张三      M     174      80  26.423571   李四      F     160      48  18.75000
  • 按其他条件筛选

如找到BMI>20的记录:

>>> mask = (frame['BMI'] > 20)>>> frame.loc[mask]  name gender  height  weight        BMI0   张三      M     174      80  26.4235702   王五      M     185      70  20.452885

DataFrame还支持许多其他的操作,篇幅有限,在此不一一展开。

7     Panel

Panel是三维的数据结构,可以看作是DataFrame的字典,这种数据结构使用很少,此处略过不提。

Pandas实战

学习技术是为了更好的工作和生活,抛开应用,技术也就失去了存在的意义。本文开篇中提到,Pandas作为数据分析工具的一个重要应用场景是量化投资,在此我想分享一下使用pandas的一个场景:

我想筛选出A股市场中过去60个交易日表现好的那些股票。关于表现好,也许每个人都有自己的看法,我的标准如下

  • 涨幅够大,区间累计涨幅达60%以上

  • 回撤小,区间内任意单个交易日跌幅不超过7%,包括高开低走7%(套人的不算好股票);区间内任意连续两个交易日累计跌幅不超过10%,包括连续两个交易日高开低走10%

我使用的数据源是TuShare,它提供了A股复权日线图,不过它没有提供复权数据的每日涨跌幅,所以我们需要对他进行处理:

>>> import tushare as ts>>> import talib as tl>>> data = ts.get_k_data('300573', autype='qfq')>>> data['p_change'] = tl.ROC(data['close'], 1)

此处使用了TALib,一个开源的金融数据分析工具。

完成初步的数据处理之后,我们就可以运行筛选条件了,截取代码片段如下:

  1. threshold = 60

  2. if len(data) < threshold:

  3.    return False

  4. data = data.tail(n=threshold)

  5. ratio_increase = (data.iloc[-1]['close'] - data.iloc[0]['close']) / data.iloc[0]['close']

  6. if ratio_increase < 0.6:

  7.    return False

  8. for i in range(1, len(data)):

  9.    if data.iloc[i - 1]['p_change'] < -7 \

  10.            or (data.iloc[i]['close'] - data.iloc[i]['open'])/data.iloc[i]['open'] * 100 < -7 \

  11.            or data.iloc[i - 1]['p_change'] + data.iloc[i]['p_change'] < -10 \

  12.            or (data.iloc[i]['close'] - data.iloc[i - 1]['open']) / data.iloc[i - 1]['open'] * 100 < -10:

  13.        return False

  14. return True

最后的结果如下:

[('603986', '兆易创新'), ('603882', '金域医学'), ('603501', '韦尔股份'), ('300782', '卓胜微'), ('300622', '博士眼镜'), ('300502', '新易盛'), ('300492', '山鼎设计'), ('300433', '蓝思科技'), ('300223', '北京君正'), ('002917', '金奥博'), ('002892', '科力尔'), ('002876', '三利谱'), ('002850', '科达利'), ('002819', '东方中科'), ('002600', '领益智造'), ('002241', '歌尔股份'), ('000049', '德赛电池')]

可以看到其中科技股独领风骚,谁让我们大A是科技牛呢?

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据分析利器之Pandas

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

数据分析利器之Pandas

Pandas是一个python的开源库,它基于Numpy,提供了多种高性能且易于使用的数据结构。Pandas最初被用作金融数据分析工具而开发,由于它有着强大的功能,目前广泛应用于数据分析、机器学习以及量化投资等。下面来跟随作者一起认识下Pa
2023-06-02

利用Python进行数据分析之初识Pandas

Pandas是构建在Python编程语言之上的一个快速、强大、灵活且易于使用的开源数据分析和操作工具。Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集。

数据分析之Pandas VS SQL!

编辑:zone来源:数据管道作者:艾德宝器AbstractPandas是一个开源的Python数据分析库,结合 NumPy 和 Matplotlib 类库,可以在内存中进行高性能的数据清洗、转换、分析及可视化工作。对于数据开发工程师或分析师
2023-06-02

python数据分析之pandas数据选

Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。  Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据选取的方式
2023-01-30

数据分析之pandas模块

一、Series  类似于一位数组的对象,第一个参数为数据,第二个参数为索引(索引可以不指定,就默认用隐式索引)Series(data=np.random.randint(1,50,(10,)))Series(data=[1,2,3],in
2023-01-30

Python数据分析之pandas读取数据

一、三种数据文件的读取二、csv、tsv、txt 文件读取 1)CSV文件读取: 语法格式:pandas.read_csv(文件路径) CSV文件内容如下:import pandas as pd file_path = "e:\\panda
2022-06-02

Python数据分析库之pandas,你

写这个系列背后的故事咦,面试系列的把基础部分都写完啦,哈哈答,接下来要弄啥嘞~pandas吧外国人开发的翻译成汉语叫 熊猫厉害厉害,很接地气一个基于numpy的库干啥的?做数据分析用的而数据分析是python体系下一个非常庞大的分支厉害到,
2023-01-31

数据分析之Pandas必知必会

Pandas是python中一个非常强大的库,对于数据分析师、数据科学家,乃至任何需要处理和分析数据的专业人士来说,Pandas都是一个不可或缺的工具。本文将为大家介绍Pandas的基础用法,帮助你迈出数据分析的第一步。

Python数据分析之pandas比较操作

目录一、比较运算符和比较方法二、两个DataFrame比较三、两个Series比较四、与数字或字符串比较五、与array进行比较一、比较运算符和比较方法 比较运算符用于判断是否相等和比较大小,Python中的比较运算符有==、!=、<、>、
2022-06-02

Python数据分析之Pandas Dataframe如何自定义

今天小编给大家分享一下Python数据分析之Pandas Dataframe如何自定义的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
2023-06-30

Python实践之使用Pandas进行数据分析

在数据分析领域,Python的Pandas库是一个非常强大的工具。这篇文章将为大家详细介绍如何使用Pandas进行数据分析,希望对大家有所帮助
2023-05-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录