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 相关文章推荐
详细介绍Ruby中的正则表达式
Apr 10 Python
Python基于有道实现英汉字典功能
Jul 25 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
浅谈Django REST Framework限速
Dec 12 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
Python实现的个人所得税计算器示例
Jun 01 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
opencv检测动态物体的实现
Jul 21 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
77A一级收信机修理记
2021/03/02 无线电
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
vue计算属性及使用详解
2018/04/02 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
详解vue 项目白屏解决方案
2018/10/31 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
django ajax json的实例代码
2018/05/29 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
学校法制宣传月活动总结
2014/07/03 职场文书
小学远程教育工作总结
2015/08/13 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL