pandas读取CSV文件时查看修改各列的数据类型格式


Posted in Python onJuly 07, 2019

下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述:

我们在调bug的时候会经常查看、修改pandas列数据的数据类型,今天就总结一下:

1.查看:

   Numpy和Pandas的查看方式略有不同,一个是dtype,一个是dtypes

print(Array.dtype)
#输出int64
print(df.dtypes)
#输出Df下所有列的数据格式 a:int64,b:int64

2.修改

import pandas as pd
import numpy as np
df = pd.read_csv('000917.csv',encoding='gbk')
df = df[df['涨跌幅']!='None']
df['涨跌幅'] = df['涨跌幅'].astype(np.float64)

print(df[df['涨跌幅']>5])

ps:在Pandas中更改列的数据类型

先看一个非常简单的例子:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)

有什么方法可以将列转换为适当的类型?例如,上面的例子,如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型?或者是创建DataFrame,然后通过某种方法更改每列的类型?理想情况下,希望以动态的方式做到这一点,因为可以有数百个列,明确指定哪些列是哪种类型太麻烦。可以假定每列都包含相同类型的值。

解决方法

可以用的方法简单列举如下:

对于创建DataFrame的情形

如果要创建一个DataFrame,可以直接通过dtype参数指定类型:

df = pd.DataFrame(a, dtype='float') #示例1
df = pd.DataFrame(data=d, dtype=np.int8) #示例2
df = pd.read_csv("somefile.csv", dtype = {'column_name' : str})

对于单列或者Series

下面是一个字符串Seriess的例子,它的dtype为object:

>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
>>> s
0     1
1     2
2    4.7
3  pandas
4    10
dtype: object

使用to_numeric转为数值。默认情况下,它不能处理字母型的字符串'pandas':

>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
ValueError: Unable to parse string

可以将无效值强制转换为NaN,如下所示:

>>> pd.to_numeric(s, errors='coerce')
0   1.0
1   2.0
2   4.7
3   NaN
4  10.0
dtype: float64

如果遇到无效值,第三个选项就是忽略该操作:

>>> pd.to_numeric(s, errors='ignore')
# the original Series is returned untouched

对于多列或者整个DataFrame
如果想要将这个操作应用到多个列,依次处理每一列是非常繁琐的,所以可以使用DataFrame.apply处理每一列。

对于某个DataFrame:

>>> a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
>>> df = pd.DataFrame(a, columns=['col1','col2','col3'])
>>> df
 col1 col2 col3
0  a 1.2  4.2
1  b  70 0.03
2  x  5   0

然后可以写:

df[['col2','col3']] = df[['col2','col3']].apply(pd.to_numeric)

那么'col2'和'col3'根据需要具有float64类型。

但是,可能不知道哪些列可以可靠地转换为数字类型。在这种情况下,设置参数:

df.apply(pd.to_numeric, errors='ignore')

然后该函数将被应用于整个DataFrame,可以转换为数字类型的列将被转换,而不能(例如,它们包含非数字字符串或日期)的列将被单独保留。

另外pd.to_datetime和pd.to_timedelta可将数据转换为日期和时间戳。

软转换——类型自动推断

版本0.21.0引入了infer_objects()方法,用于将具有对象数据类型的DataFrame的列转换为更具体的类型。

例如,用两列对象类型创建一个DataFrame,其中一个保存整数,另一个保存整数的字符串:

>>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1']}, dtype='object')
>>> df.dtypes
a  object
b  object
dtype: object

然后使用infer_objects(),可以将列'a'的类型更改为int64:

>>> df = df.infer_objects()
>>> df.dtypes
a   int64
b  object
dtype: object

由于'b'的值是字符串,而不是整数,因此'b'一直保留。

astype强制转换

如果试图强制将两列转换为整数类型,可以使用df.astype(int)。

示例如下:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
df
Out[16]: 
 one two three
0  a 1.2  4.2
1  b  70 0.03
2  x  5   0
df.dtypes
Out[17]: 
one   object
two   object
three  object
df[['two', 'three']] = df[['two', 'three']].astype(float)
df.dtypes
Out[19]: 
one    object
two   float64
three  float64

总结

以上所述是小编给大家介绍的pandas读取CSV文件时查看修改各列的数据类型格式,希望对大家有所帮助,如果有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
使用Python编写Linux系统守护进程实例
Feb 03 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
Python中datetime模块参考手册
Jan 13 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
python 获取计算机的网卡信息
Feb 18 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
Python实现FTP文件传输的实例
Jul 07 #Python
Python爬虫动态ip代理防止被封的方法
Jul 07 #Python
Python异常处理例题整理
Jul 07 #Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 #Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 #Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 #Python
对Python中画图时候的线类型详解
Jul 07 #Python
You might like
php 读取文件乱码问题
2010/02/20 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
JavaScript代码复用模式实例分析
2012/12/02 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python+django实现文件上传
2016/01/17 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
解决python3输入的坑——input()
2020/12/05 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
运动会方阵口号
2014/06/07 职场文书
校长师德表现自我评价
2015/03/05 职场文书
2016年五一促销广告语
2016/01/28 职场文书
公司年会主持词范文!
2019/05/07 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers