这一节, 我们要讨论 Pandas 的输入与输出, 并且应用在现实的实际例子中. 为了得到大量的数据, 向大家推荐一个网站 Quandl. Quandl 有很多免费和付费的资源. 这个网站最大的优势在于数据的规范化, 集中性以及提取数据的方式都是一样的. 如果你获取数据的时候, 选择用 Python, 那么数据会自动转成 dataframe. 但是, 我们这节课的目的是理解 Pandas 的输入与输出, 所以我们还是手动下载一个 CSV 文件.

举个例子, 我们想要买卖德克萨斯州的一处房产. 那里的邮政编码是 77006. 我们可以去查看当地的房产清单, 并且可以了解到现在的市场价, 但是我们却得不到历史信息. 但是我们可以在 Quandl 得到这方面的信息. 我们可以查寻 "home value index 77006". 我们可以得到一系列的结果, 有高, 中, 低档, 还有三室的等等. 加入我们想要一个三居室的房子. 我们选中一个, 然后点进去看一下. 事实上, Quandl 已经提供了图表数据, 但是出于学习的目的, 我们还是获取其数据集, 自己制作图表, 以及其他的一些数据分析. 选择 CSV 格式并下载. Pandas 支持 csv, excel, hdf, sql, json, msgpack, html, gbg, stata, clipboard, pickle data 等格式的输入输出. 把下载好的 csv 文件放在与你在操作的 python 脚本文件的文件夹里.

下面开始处理这个 csv 文件, 首先是导入并转成 dataframe:

import pandas as pd

df = pd.read_csv('ZILL-Z77006_3B.csv')

print(df.head())

输出:

Date Value

0 2018-11-30 48.3

1 2018-10-31 48.1

2 2018-09-30 48.3

3 2018-08-31 49.4

4 2018-07-31 49.2

通过这个输出, 我们发现, 我们需要设置一个合适的索引:

df.set_index('Date', inplace = True)

输出:

Value

Date

2018-11-30 48.3

2018-10-31 48.1

2018-09-30 48.3

2018-08-31 49.4

2018-07-31 49.2

现在, 我们又想把这个 dataframe 输出成 csv 文件呢?

df.to_csv('newCsv.csv')

好了, 现在查看一下你的项目文件夹, 看看是否多了一个 newCsv.csv 文件? 理论上, 应该是有的. 可以打开看一下这个文件, 大概长这个样子:

目前我们这个例子是只有一个 value 列, 但是如果你的数据里有很多的列, 然而, 你只想将其中的某一列输出到 csv 文件, 可以这样做:

df['Value'].to_csv('newCsv2.csv')

生成的 csv 文件大概长这样:

由于在之前我们把 "Date" 设置成了索引列, 所以日期列作为索引列也一并输出了, 但是与之前去别的是没有表头了. 这里大家可以自己尝试一下, 不要"Date"列做索引, 那么就不会输出日期这一列, 但是同样会输出一列自增数字.

下面, 我们再来读入第一个生成的 csv 文件:

df = pd.read_csv('newCsv.csv')

print(df.head())

输出:

Date Value

0 2018-11-30 48.3

1 2018-10-31 48.1

2 2018-09-30 48.3

3 2018-08-31 49.4

4 2018-07-31 49.2

见鬼, 我们定义的索引又没有了. 这是因为 CSV 文件并没有"索引"属性. 为了解决这个问题, 我们可以在读取的时候同时设置索引, 而不是读取之后再设置索引:

df = pd.read_csv('newCsv.csv', index_col=0)

print(df.head())

Output:

Value

Date

2015-06-30 502300

2015-05-31 501500

2015-04-30 500100

2015-03-31 495800

2015-02-28 492700

这里 index_col = 0 的意思就是把第0列设置为索引列.

还有一个问题, 就是 "Value" 这个列名其实是没有什么实际意义的, 我们需要给它一个具有实际意义的名字, 有很多方法可以更改列名, 下面介绍其中一种:

df.columns = ['Austin_HPI']

print(df.head())

输出:

Austin_HPI

Date

2018-11-30 48.3

2018-10-31 48.1

2018-09-30 48.3

2018-08-31 49.4

2018-07-31 49.2

接下来, 我们再把这个 dataframe 保存成一个新的 csv 文件:

df.to_csv('newcsv3.csv')

打开文件看下, 大概长这样:

我们看到新生成文件带上了表头, 那么如果你不想要这个表头, 要怎么做呢?

df.to_csv('newcsv4.csv', header=False)

这样保存的 newcsv4.csv 文件就没有表头了, 那么当我们再想读入这个文件的时候, 自然就也是没有表头的了, 那么要怎么在读取文件的同时加上表头呢? 可以这样操作:

df = pd.read_csv('newcsv4.csv', names = ['Date','House_Price'], index_col=0)

print(df.head())

输出:

Austin_HPI

Date

2018-11-30 48.3

2018-10-31 48.1

2018-09-30 48.3

2018-08-31 49.4

2018-07-31 49.2

以上就是一些基本的输入/输出操作.

正如我们前面所说的, Pandas 支持各种格式的输入/输出. 下面我们来尝试一下以 html 的格式输出 df 文件:

df.to_html('example.html')

这其实就是 html 的表格, 大家可以查看源码看一下. 生成的 example.html 大概长这样:

有一点要注意的是: 这个表格被自动赋予了 "dataframe" 类, 也就是说你还可以对其自定义其他 CSS 样式.

当我需要 SQL 输出的时候, 我特别喜欢使用 Pandas. 我会把数据库里的所有数据都转成 dataframe 格式, 然后做需要的计算, 再以我想要的格式输出.

最后, 介绍一下如果你想改变某一列的列名, 该怎么做呢:

df = pd.read_csv('newcsv4.csv', names=['Date', 'Austin_HPI'])

print(df.head())

df.rename(columns={'Austin_HPI': '77006_HPI'}, inplace=True)

print(df.head())

输出:

Date Austin_HPI

0 2018-11-30 48.3

1 2018-10-31 48.1

2 2018-09-30 48.3

3 2018-08-31 49.4

4 2018-07-31 49.2

Date 77006_HPI

0 2018-11-30 48.3

1 2018-10-31 48.1

2 2018-09-30 48.3

3 2018-08-31 49.4

4 2018-07-31 49.2

这里呢, 我们首先读入文件, 并且分别给字段命名为 "Date" 和 "Austin_HPI". 然后, 我们决定不叫 "Austin_HPI", 而要改为 "77006_HPI". 所以, 我们使用 df.rename() 函数, 指定我们我想改变的列的名字. 记住这里别忘了加上 "inplace=True" 来确保对原对象做了更改, 而不是生成一个新对象.

后面会持续更新, 有任何问题或者错误, 欢迎留言, 希望和大家交流学习.

python数据录入和分析_基于 Python 和 Pandas 的数据分析(3) --- 输入/输出 基础相关推荐

  1. python微博爬虫分析_基于Python的新浪微博爬虫研究

    基于 Python 的新浪微博爬虫研究 吴剑兰 (江苏警官学院,江苏 南京 210031 ) [摘 要] 摘 要:对比新浪提供的 API 及传统的爬虫方式获取微博的优缺点, 采用模拟登陆和网页解析技术 ...

  2. python微信好友分析_基于python实现微信好友数据分析(简单)

    一.功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式 2. ...

  3. 基于python的可视化分析_基于Python 的数据分析与可视化平台研究

    基于 Python 的数据分析与可视化平台研究 宋永生 ; 黄蓉美 ; 王军 [期刊名称] <现代信息科技> [年 ( 卷 ), 期] 2019(003)021 [摘要] 数据分析与可视化 ...

  4. python日本 老龄化分析_基于Python关于世界自杀率影响因素的分析以及机器学习预测...

    基于Python关于世界自杀率影响因素的分析以及机器学习 预测 文/刘子桦 马若炎 [摘 要]摘 要 [期刊名称]<电子技术与软件工程> [年(卷),期]2019(000)017 [总页数 ...

  5. python微博文本分析_基于Python的微博情感分析系统设计

    基于 Python 的微博情感分析系统设计 王欣 ; 周文龙 [期刊名称] < <信息与电脑> > [年 ( 卷 ), 期] 2019(000)006 [摘要] 微博是当今公众 ...

  6. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  7. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  8. python 评论分析_基于Python-Snownlp的新闻评论数据分析

    摘 要 网上热点新闻的评论不仅反映了民众对社会热点事件的关注程度,也反映了公众所表现出的各类情感价值和思想动态.基于Python- Snownlp经过数据采集,数据预处理,建立向量模型,数据挖掘与分析 ...

  9. python微博评论情感分析_基于Python的微博情感分析系统设计

    2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...

  10. python气象绘图速成_基于Python气象数据处理与可视化分析

    基于 Python 气象数据处理与可视化分析 张鑫 ; 曹蕾 ; 韩基良 [期刊名称] <气象灾害防御> [年 ( 卷 ), 期] 2020(027)001 [摘要] 全国综合气象信息共享 ...

最新文章

  1. 计算机二级c语言考生文件夹在哪,2017年全国计算机二级C语言考试题
  2. MySQL搭建主从复制架构实战
  3. python字典排序及字典集合去重高阶教程
  4. MySQL 修改数据
  5. Android 4.1新增功能特性
  6. flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法
  7. TIOBE 2 月编程语言排行榜:Objective-C 的出路在何方?
  8. mapxtreme java 版本分布式部署。自己的应用和mapxtreme渲染器不在同一台机器上
  9. go语言开发环境搭建_GO语言开发环境搭建
  10. oracle安装最后一步完成了就消失了_Oracle安装过程中遇到的一些问题及解决方案...
  11. Linux命令行报错 bash: cannot create temp file for here-document: No space left on device
  12. 蛮牛第2季- Unity2d游戏开发经典教程
  13. 服装管理解决方案丨汇信
  14. c语言程序运行结果怎么看,c语言程序的运行结果.ppt
  15. 大气科学领域必备的模型软件汇总丨WRF、WRF-CMAQ、WRF-Chem、WRF-Hydro、WRF DA、PMF、MCM、CAMx、SMOKE、CMIP6等
  16. 打印1000年到2000年之间的闰年
  17. 传詹克团、吴忌寒将卸任比特大陆CEO一职 1
  18. bootloader学习笔记---第一篇以stm32为例
  19. Java 应用一般架构
  20. 解决申请开发者office E5中无法发送手机验证码,reCaptcha加载失败

热门文章

  1. Git commit文件提交到仓库失败原因——Author identity unknown
  2. 【接口篇 / Wan】(6.4) ❀ 02. 单条宽带旁挂软路由优化 ❀ FortiGate 防火墙
  3. 八千里路云和月 | 2021年最新从零到大数据专家学习路径指南
  4. ROS:launch规范及用法
  5. 【ESP8266】 ESP8266与LittleFS文件系统
  6. 【Rust日报】2022-07-06 Android 平台中的 Rust
  7. Linux dd烧写系统
  8. sublime license key
  9. 计算机初学者先学什么语言,计算机语言入门先学什么?
  10. linux下的网络·环境部署