pandas 入门教程 !
2 F Thu 3 G Fri 4 A Sat 5 B Sun 注:本文的代码和数据文件可以通过文章开头提到的Github仓库获取。 读取CSV文件下面,我们再来看读取CSV文件的例子。 第一个CSV文件内容如下 $ cat test1 . csv C,Mon D,Tue E,Wed F,Thu G,Fri A,Sat 读取的方式也很简单: df2 = pd . read_csv ( "data/test1.csv" ) print ( "df2: {} " . format ( df2 )) 我们再来看第2个例子,这个文件的内容如下: $ cat test2 . csv C | Mon D | Tue E | Wed F | Thu G | Fri A | Sat 严格的来说,这并不是一个CSV文件了,因为它的数据并不是通过逗号分隔的。在这种情况下,我们可以通过指定分隔符的方式来读取这个文件,像这样: df3 = pd . read_csv ( "data/test2.csv",sep = "|" ) print ( "df3: {} " . format ( df3 )) 实际上,read_csv支持非常多的参数用来调整读取的参数,如下所示:
处理无效值现实世界并非完美,我们读取到的数据常常会带有一些无效值。如果没有处理好这些无效值,将对程序造成很大的干扰。 对待无效值,主要有两种处理方法:直接忽略这些无效值;或者将无效值替换成有效值。 下面我先创建一个包含无效值的数据结构。然后通过pandas.isna函数来确认哪些值是无效的: import pandas as pd import numpy as np df = pd . DataFrame ([[ 1.0,np . nan,3.0,4.0 ],[ 5.0,8.0 ],[ 9.0,12.0 ],[ 13.0,15.0,16.0 ]]) print ( "df: {} " . format ( df )); print ( "df: {} " . format ( pd . isna ( df )));**** 这段代码输出如下: df : 忽略无效值我们可以通过pandas.DataFrame.dropna函数抛弃无效值: print ( "df.dropna(): {} " . format ( df . dropna ())); 注:dropna默认不会改变原先的数据结构,而是返回了一个新的数据结构。如果想要直接更改数据本身,可以在调用这个函数的时候传递参数 inplace = True。 对于原先的结构,当无效值全部被抛弃之后,将不再是一个有效的DataFrame,因此这行代码输出如下: df . dropna (): Empty 我们也可以选择抛弃整列都是无效值的那一列: print ( "df.dropna(axis=1,how='all'): {} " . format ( df . dropna ( axis = 1,how = 'all' ))); 注:axis=1表示列的轴。how可以取值’any’或者’all’,默认是前者。 这行代码输出如下: df . dropna ( axis = 1,how = 'all' ): 替换无效值我们也可以通过fillna函数将无效值替换成为有效值。像这样: print ( "df.fillna(1): {} " . format ( df . fillna ( 1 ))); 这段代码输出如下: df . fillna ( 1 ): 将无效值全部替换成同样的数据可能意义不大,因此我们可以指定不同的数据来进行填充。为了便于操作,在填充之前,我们可以先通过rename方法修改行和列的名称: df . rename ( index ={ 0 : 这段代码输出如下: df : col1 col2 col3 col4 index1 1.0 处理字符串数据中常常牵涉到字符串的处理,接下来我们就看看pandas对于字符串操作。 Series的str字段包含了一系列的函数用来处理字符串。并且,这些函数会自动处理无效值。 下面是一些实例,在第一组数据中,我们故意设置了一些包含空格字符串: import pandas as pd s1 = pd . Series ([ ' 1','2 ',' 3 ','4','5' ]); print ( "s1.str.rstrip(): {} " . format ( s1 . str . lstrip ())) print ( "s1.str.strip(): {} " . format ( s1 . str . strip ())) print ( "s1.str.isdigit(): {} " . format ( s1 . str . isdigit ())) 在这个实例中我们看到了对于字符串strip的处理以及判断字符串本身是否是数字,这段代码输出如下: s1 . str . rstrip (): 0 下面是另外一些示例,展示了对于字符串大写,小写以及字符串长度的处理: s2 = pd . Series ([ 'Stairway to Heaven','Eruption','Freebird','Comfortably Numb','All Along the Watchtower' ]) print ( "s2.str.lower(): {} " . format ( s2 . str . lower ())) print ( "s2.str.upper(): {} " . format ( s2 . str . upper ())) print ( "s2.str.len(): {} " . format ( s2 . str . len ())) 该段代码输出如下: s2 . str . lower (): 0 stairway to heaven 1 eruption 2 freebird 3 comfortably numb 4 all along the watchtower dtype : object s2 . str . upper (): 0 STAIRWAY TO HEAVEN 1 ERUPTION 2 FREEBIRD 3 COMFORTABLY NUMB 4 ALL ALONG THE WATCHTOWER dtype : object s2 . str . len (): 0 (编辑:阜阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |