利用Python进行数据分析

最近工作中用到了python进行数据分析,基本上是绕不开Python的Pandas和NumPy模块。

[b]1. NumPy:[/b][url]http://www.numpy.org[/url]
关于Numpy的发音,维基百科上可以读作/ˈnʌmpai/(NUM-py) 或是/ˈnʌmpi/(NUM-pee)。

最早的NumPy版本可以追溯到:v0.9.6,发布于:05/14/2006。
在2005年,NumPy的开发者Travis Oliphant想要统一社区里的array的包和Numarray关于数字型的特点,所以就有了NumPy库,正式的1.0版本发布于10/25/2006。

目前最新版本是v1.14.4,发布于06/06/2018。
在线文档(quickstart):[url]https://docs.scipy.org/doc/numpy/user/quickstart.html[/url]

[b]2. Pandas: [/b][url]http://pandas.pydata.org[/url]
Pandas是基于Numpy构建的,让以NumPy为中心的应用变得更加简单。
比较早的版本是0.12.0,发布于01/31/2014。

目前最新版本是v0.23.0,发布于05/16/2018
在线文档(quickstart):[url]http://pandas.pydata.org/pandas-docs/stable/[/url]


[b]3. 三种主要数据结构[/b]
NumPy: 最重要的数据结构是[b]ndarray[/b],是一个通用的同构数据多维容器。
Pandas: 两大数据结构:Series和DataFrame
[b]Series[/b]是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之 相关的数据标签(即 索引)组成。
[b]DataFrame[/b]是一个[b]表格型[/b]的数据结构,它含有一组有序的列,每列可以是不同的值类型。


[b]4. DataFrame的优点[/b]
[list]
[*]Pandas的DataFrame是表格型数据,可读性很强。
[*]ndarray理论上所有的元素必须是相同类型的(由dtype字段说明类型),而DataFrame每列的数据可以不是同种类型。
[*]更强大的类库,比如更容易将数据group by, join等。
[*]强大的io支持,从csv或是db中读取非常方便(使用方法read_csv或read_sql)。
[/list]
[b]5. DataFrame的一些示例[/b]
Python version: 3.6.5
IDE: PyCharm

5.1 从数据库读取数据

import pandas as pd
from sqlalchemy import create_engine

def testReadSql(self):
engine = create_engine('mysql://username:pwd@localhost:3306/schema?charset=utf8')
sql = 'SELECT * FROM user'
df = pd.read_sql(sql, engine)
print(df)

userid name
0 1 Lucy
1 2 Allen
3 3 Lily


5.2 按列设值、重命名列、按列取值

def testCreate(self):
df = pd.DataFrame();
df['id'] = [1,2,3]
df['name'] = ['Lucy', 'Allen', 'Lily']
print(df)

df.columns.values[1] = 'english name'
print(df)

print(df.id)
print(df.get('id'))


5.3 DataFrame的merge, join和concatenate
详见: [url]http://pandas.pydata.org/pandas-docs/stable/merging.html[/url]

def testMerge(self):
x = pd.DataFrame();
x['name'] = ['Lucy', 'Andy', 'Lily', 'Jack', 'Allen']
x['English'] = [90, 70, 60, 78, 88]
#print(x)

y = pd.DataFrame();
y['name'] = ['Andy', 'Jack', 'Rose']
y['Chinese'] = [71, 72, 73]
#print(y)

score = pd.merge(x, y, on='name', how='left', validate='one_to_one')
print(score)


5.4 填充缺失值
ffill():用上一个数据代替NaN
bfill():用后一个数据代替NaN
上接代码:

print(score.ffill())
print(score.bfill())


5.5 效率问题
最好少用或不用按行循环,因为效率很低很低。


[b]6. 数据分析方面其它的库[/b]
[list]
[*]matplotlib:绘制数据图表
[*]IPython
[*]SciPy:用这个模块加载、存储过matlab文件
[/list]
[b]7. 需要安装模块[/b]
pip install pandas
pip install sqlalchemy
pip install mysqlclient(如果报错,请先加PATH, PATH="$PATH":/usr/local/mysql/bin)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值