您的位置:首页 > 编程语言 > Python开发

python机器学习库入门之pandas

2017-02-12 23:56 281 查看
看之前你可以没有任何机器学习基础,但你得有点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 P
df = 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.000000
mean 29.699118
std 14.526497
min 0.420000
25% 20.125000
50% 28.000000
75% 38.000000
max 80.000000
Name: Age, dtype: float64打印出了年龄的数目,平均值,标准差,最小值,最大值,以及比例。

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

print df['Age'].dropna().std()
print df['Age'].dropna().mean()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: