pandas在kaggle比赛中比较常见,基本上所有的数据都会读入pandas,然后在pandas里面进行各种特征工程,包括特征筛选,特征组合等等。下面列出常见的pandas用法。
目录
一、数据的读取与保存
注:pandas读取数据非常复杂,这里仅仅是最简单最基本的读取方法,仅仅能够读入kaggle里面的数据集,如果想了解更多方法,请阅读pandas文档
# 读入ex1.csv文件
df = pd.read_csv('ex1.csv')
df内容如下:
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
如果读入的数据没有标题行,需要自己添加标题行,数据如下,需要读入该数据:
有两种读入方法
1. 用默认的标题行
pd.read_csv('ex1.csv',header=None)
2.指定对应的标题行
pd.read_csv('ex1.csv',names=['a','b','c','d','message'])
结果如下:
# 数据的保存
# 读入ex1.csv,并保存到test.csv中。
a = pd.read_csv('ex1.csv',names=['a','b','c','d','message'])
a.to_csv('test.csv')
这样保存的csv,一般有前面的索引,如下:
如果不想保存索引,可以用下面的方法,这样保存的文件就不会有前面的索引:
a.to_csv('test.csv',index=False)
二、DataFrame中的列对象-Series
DataFrame是一个二维的表结构,而其中的每一列是一个一维结构,即Series。它是有一组类似的数组的数据和一组标签组成。
2.1 Series对象的创建
# Series对象有两种创建方式
# 1 直接创建
# 创建的时候不指定索引,索引为0,1,2....
obj = pd.Series([4,7,-5,3])
# 创建的时候制定索引,索引为d,b,a,c
obj2 = pd.Series([4,7,-5,3],index=['d','b','a','c'])
# 2 字典创建
data = {'d': 4, 'b': 7, 'a': -5, 'c': 3}
obj3 = pd.Series(data=data)
输出结果如下:
2.2 Series对象的一些属性和方法
1.name属性,Series序列有一个name属性,这个属性就是给这个Series取个名字,如果从DateFrame里面取出一列,就会看到name属性正好是DataFrame对应的列名。
2.index方法,value方法返回Series对应的索引和值
三、DataFrame中的行对象-index
3.1 索引的创建与重新索引
# 索引对象的创建
labels = pd.Index(np.arange(4))
labels输出结果:
Int64Index([0, 1, 2, 3], dtype='int64')
# 用索引对象创建Series对象
obj = pd.Series(data=[5,3,2,1],index=labels)
输出结果为:
0 5
1 3
2 2
3 1
dtype: int64
# 重新排列索引
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
obj的输出结果:
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
# 将索引顺序排列为a,b,c,d
obj.reindex(['a','b','c','d'])
输出结果为:
a -5.3
b 7.2
c 3.6
d 4.5
dtype: float64
注:索引为不可修改的对象:
index = obj.index
index[0]=2试图修改索引就会报如下错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-58207ab66cb0> in <module>
----> 1 index[0]=2
d:\python\lib\site-packages\pandas\core\indexes\base.py in __setitem__(self, key, value)
3936
3937 def __setitem__(self, key, value):
-> 3938 raise TypeError("Index does not support mutable operations")
3939
3940 def __getitem__(self, key):
TypeError: Index does not support mutable operations
3.2 索引的选取与过滤
四、DataFrame的常见用法
4.1 取DataFrame的行列数据
# 创建DataFrame对象
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
输出DataFrame中的列信息
输出DataFrame中行的信息:
也可以用loc取某一列:
利用drop删除指定行,指定列的消息:
4.2 DataFrame的一些描述信息
# 创建DataFrame
data ={'x1':[1,2,3,4,5,6,7],
'x2':[2,4,6,8,10,12,14],
'y':[3,6,9,12,15,18,21]}
frame = pd.DataFrame(data)
下面是一些常见的描述DataFrame的信息:
下面是一些常见的统计信息:
在kaggle比赛中,经常会用以下函数来查看相关性
# 查看各个变量和y的相关性系数,由于x1,x2,y是线性关系,所以相关系数为1
frame.corr()['y']
x1 1.0
x2 1.0
y 1.0
Name: y, dtype: float64