python机器学习库入门之pandas

来源:互联网 发布:苹果手机怎么信任软件 编辑:程序博客网 时间:2024/05/29 02:33

看之前你可以没有任何机器学习基础,但你得有点python基础(因为我就是这样- -,所以不会python不一定就看不懂了)。

推荐个免费软件Anaconda,集成了python机器学习的大部分库包括numpy,pandas,scipy,matplotlib,scikit-learn。

一个exe(也有支持Linux,mac版本的版本)文件下一步下一步就安装好了,比你自己安装,还要克服各种库间的依赖方便多了。


数据挖掘的一个知名竞赛平台之一 kaggle,很多内容都是从这里开始的。在那里可以下到真的数据集,csv(comma split value)文件,用逗号分隔数值,可以用excel打开。

pandas主要是用于分析的第一步导入数据,当然还有更强大的用处(0.0不过还没学到那里)。

导入数据:

import pandas as pd#导入pandas模块df = pd.read_csv("E:/train.csv") #windows环境#读取数据集到Pandas的数据框架中print df.head(3) #打印文件前三行内容


比起python自带的csv模块,pandas还可以读取xlsx格式的文件

df = pd.read_excel("E:/train.xlsx", "Sheet1") 


甚至还可以指定分隔符读取特定文件

df = pd.read_csv(“E:/Test.txt”,sep=’\t’) # 读取tab符分隔的文本文件


还可以调整原始文件中行与行的原始顺序

以kaggle下泰坦尼克预知生存的数据为例,第一关键字性别升序,性别一致时年龄降序排序

df = pd.read_csv('titannic.csv')print df.sort(['Fare', 'Age'], ascending = [True, False])# True代表升序,False是降序
如果只有一个关键字,可以不用列表。


数据可视化将更加清晰展示数据全貌,也为你做数据分析提供帮助。

还是以Titannic数据集为例,下面的例子是从kaggle的教程拿来的,不过现在那个教程网页替换成别的内容了。

import pylab as Pdf = pd.read_csv('titannic.csv')df['Age'].hist()P.show()
可以得到年龄分布直方图
df['Age'].dropna().hist(bins=16, range=(0,80), alpha = .5)P.show()
解释一下dropna就是说过滤掉age内容是空的记录

bins后面跟着直方个数,指定16个,默认10个,

比如前一个图就是10个。range根据图可以看出就是横坐标范围,alpha,通过变换不同值发现只能0.0~1.0

1的颜色最深,0时候看不到图。问了数盟群,说是透明度。现象来看是符合的。


造一个新字段,因为原有字段可能很复杂,但实际使用的时候不需要这样复杂,比如性别,

只需要一个字母表示就可以提供想要的信息了

# 将sex字段每行记录的第一个字母大写,拼出新字段df['Gender'] = df['Sex'].map( lambda x: x[0].upper() )
再来个复杂的映射,其实我们不需要字符串,我们需要数值

df['Gender'] = df['Sex'].map( {'female': 0, 'male': 1} ).astype(int)
这样就把性别映射为数值类型是32位整型,astype这里是复制出int类型的意思。


pandas还有一点区别于csv模块的是,读取的数据不是只有存储,还有计算的部分

print df['Age'].dropna().describe()
单拿年龄来看,

count    714.000000mean      29.699118std       14.526497min        0.42000025%       20.12500050%       28.00000075%       38.000000max       80.000000Name: Age, dtype: float64
打印出了年龄的数目,平均值,标准差,最小值,最大值,以及比例。


还可以根据名字调用方法:

print df['Age'].dropna().std()print df['Age'].dropna().mean()















0 0