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

  

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

  

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

  

1。查看:

  

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

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

2。修改

  

        熊猫作为pd导入   进口numpy np   df=pd.read_csv (000917. csv,编码=' gbk ')   df=df (df['涨跌幅的]!='没有']   df['涨跌幅')=df(“涨跌幅的].astype (np.float64)      print (df (df['涨跌幅”)在5])   之前      

  

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

        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 (dtype=案《?#示例1   df=pd.DataFrame (data=https://www.yisu.com/zixun/d, dtype=np.int8) #示例2   df=pd.read_csv (“somefile。csv”, dtype={column_name: str})      

对于单列或者系列

  

下面是一个字符串系列的例子,它的dtype为对象:

        在在在s=pd。系列([' 1 ',' 2 ',' 4.7 ',“熊猫”,“10”))   在在在年代   0 1   1 2   2 4.7   3熊猫   4 10   以前dtype:对象      

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

        在在在pd.to_numeric (s) #或pd。to_numeric(年代,错误=岣摺?   ValueError:无法解析字符串      

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

        在在在pd。to_numeric(年代,错误=扒科取?   0 1.0   1 2.0   2 4.7   3南   4 10.0   dtype: float64      

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

        在在在pd。to_numeric(年代,错误=昂雎浴?   #返回原系列没有      

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

  

对于某个DataFrame:

        在在在a=[[' a ', ' 1.2 ', ' 4.2 '], [' b ', ' 70 ', ' 0.03 '], [' x ', ' 5 ', ' 0 ']]   在在在df=pd。DataFrame(列=[‘col1’,‘col2’, ' col3 '])   在在在df   col1 col2 col3   0 1.2 4.2   1 b 70 0.03   2 x 5 0      

然后可以写:

        df [[‘col2’,‘col3]]=df [[‘col2’,‘col3]]苹果(pd.to_numeric)      

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

  

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

        df.apply (pd。to_numeric错误=昂雎浴?      

然后该函数将被应用于整个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='对象')   在在在df.dtypes   一个对象   b对象   以前dtype:对象      

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