`
angelbill3
  • 浏览: 253015 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Python进行数据分析

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

1. NumPy:http://www.numpy.org
关于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):https://docs.scipy.org/doc/numpy/user/quickstart.html

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

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


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


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

5. DataFrame的一些示例
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
详见: http://pandas.pydata.org/pandas-docs/stable/merging.html
    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 效率问题
最好少用或不用按行循环,因为效率很低很低。


6. 数据分析方面其它的库
  • matplotlib:绘制数据图表
  • IPython
  • SciPy:用这个模块加载、存储过matlab文件

7. 需要安装模块
pip install pandas
pip install sqlalchemy
pip install mysqlclient(如果报错,请先加PATH, PATH="$PATH":/usr/local/mysql/bin)


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics