2018-12-20 16:02:29 zwx19921215 阅读数 858

python数据分析入门,作为入门文章系列主要包含以下几个内容:

1.数据的来源(本案例采用的数据来自于上一篇文章中爬取的智联招聘信息):读取数据库数据、数据写入csv文件、读取csv文件等

2.数据的处理:对载入到内存的数据进行一系列的操作(处理总共包含清洗、过滤、分组、统计、排序、计算平均数等一系列操作,本文只简单涉及了其中某几个)

3.对处理后的数据进行可视化分析等

# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author  : xiaofeng
@Time    : 2018/12/19 15:23
@Desc : Less interests,More interest.(数据分析入门)
@Project : python_appliction
@FileName: analysis1.py
@Software: PyCharm
@Blog    :https://blog.csdn.net/zwx19921215
"""
import pymysql as db
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt

# mysql config
mysql_config = {
    'host': '110.0.2.130',
    'user': 'test',
    'password': 'test',
    'database': 'xiaofeng',
    'charset': 'utf8'
}

"""
read data from mysql and write to local file
(从数据库中读取数据写入本地文件)
@:param page_no
@:param page_size
@:param path 文件写入路径
"""


def read_to_csv(page_no, page_size, path):
    # read from database
    database = db.connect(**mysql_config)
    if page_no > 1:
        page_no = (page_no - 1) * page_size
    else:
        page_no = 0
    sql = 'select * from zhilian limit ' + str(page_no) + ',' + str(page_size) + ''
    df = pd.read_sql(sql, database)
    print(df)
    database.close()
    # write to csv
    local = path
    df.to_csv(local, encoding='gbk')


"""
read data from remote address or local address
(读取文件从远程地址或者本地)
"""


def read_from_csv(path):
    # remote address
    # data_url = 'https://xxxx/zhilian.csv'
    # local address
    # data_url = 'G:/zhilian.csv'
    df = pd.read_csv(path, encoding='gbk')
    return df


"""
数据集的简单(过滤、分组、排序)处理
"""


def simple_op(path):
    df = read_from_csv(path)
    # top 10 :获取前10行
    print('--------------top 10-----------')
    top = df.head(10)
    print(top)
    # tail 10:获取后10行
    print('------------tail 10------------')
    tail = df.tail(10)
    print(tail)
    # filter:根据指定条件过滤
    print('-------------filter----------')
    special_jobid = df[df.JobID == 595950]
    print(special_jobid)
    special = df[(df.id >= 110) & (df.PublishDate == '2018-12-18')]
    print(special)
    # check :检查各列缺失情况
    print('-------------check----------------')
    check = df.info()
    print(check)
    print('--------------data describe-----------')
    # count,平均数,标准差,中位数,最小值,最大值,25 % 分位数,75 % 分位数
    describe = df.describe()
    print(describe)
    # 添加新列
    df2 = df.copy()
    df2['AnnualSalaryAvg'] = (df['AnnualSalaryMax'] + df['AnnualSalaryMin']) / 2
    # 重新排列指定列
    columns = ['JobID', 'JobTitle', 'CompanyName', 'AnnualSalaryMin', 'AnnualSalaryMax', 'AnnualSalaryAvg']
    df = pd.DataFrame(df2, columns=columns)
    print(df)


"""
可视化分析
"""


def visualized_analysis(path):
    df = read_from_csv(path)
    df_post_count = df.groupby('JobLactionStr')['AnnualSalaryMax'].count().to_frame().reset_index()
    # subplots(1, 1) 表示1x1个子图,figsize=(25, 8) 子图的宽度和高度
    # f, [ax1,ax2] = plt.subplots(1, 2, figsize=(25, 8)) 表示1x2个子图
    f, ax2 = plt.subplots(1, 1, figsize=(25, 8))

    sns.barplot(x='JobLactionStr', y='AnnualSalaryMax', palette='Greens_d', data=df_post_count, ax=ax2)
    ax2.set_title('各城市职位数量对比', fontsize=15)
    ax2.set_xlabel('城市')
    ax2.set_ylabel('数量')
    # 用来正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 用来正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    plt.show()


if __name__ == '__main__':
    path = 'G:/zhilian.csv'
    read_to_csv(0, 100, path)
    df = read_from_csv(path)
    simple_op(path)
    visualized_analysis(path)

控制台输出如下:

 

写入本地csv文件效果如下:

 

可视化效果如下:

 

注:由于是入门文章第一篇,所以并没有对数据分析做过深的探索,更深层次的研究将会在后续系列中呈现!

2019-01-09 21:26:03 weixin_39549161 阅读数 739

python数据分析第三方库介绍

Python本身数据分析功能不强,需要安装一些第三方库来增强它的能力,一般用的的库有Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras和Gensim等。

Numpy

虽然列表可以完成基本的数组功能,但它不是真正的数组,而在数据量较大时,使用列表的速度会非常慢。因此,Numpy提供了真正的数组功能。值得强调的是,Numpy内置的函数处理数据的速度是C语言级别的,因此编程时,应尽量使用它们内置的函数。

代码1 Numpy基本操作
# -*- coding:utf-8 -*
import numpy as np
a = np.array([2,0,1,5]) #创建一维数组
print(a)
print(a[:3]) #输出数组前三个数值
print(a.min()) #输出数组中最小值
a.sort() #将a中元素从小到大排序
b = np.array([[1,2,3],[4,5,6]])
print(b*b)

Scipy

Numpy提供了多维数组的功能,但只是一般数组,不是矩阵。例如,当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。Scipy提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。
Scipy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理以及图像处理、常微分方程求解和其他科学与工程中常用计算。
Scipy依赖于Numpy。

代码2 Scipy基本操作
# -*- coding:utf-8 -*
from scipy.optimize import fsolve
def f(x): #定义求解方程
	x1 = x[0]
	x2 = x[1]
	return [2*x1 - x2**2 -1,x1**2 - x2 -2]
result = fsove(f,[1,1])
print(result) #输出结果,为array([1.91963957,1.68501606])
from scipy import integrate
def g(x):
	return (1-x**2)**0.5
pi_2,err = integrate.quad(g,-1,1)

Pandas

Pandas功能非常强大,支持类似于SQL的数据增、删、查、改,并带有丰富的数据处理函数;支持时间序列分析功能;支持处理缺失数据等。
pandas基本数据结构是Series和DataFrame,Series就是 序列,类似于一维数组;Dataframe相当于一张二维的表格,类似于二维数组。

代码3 Pandas基本操作
import pandas as pd 
s = pd.Series([1,2,3],index=['a','b','c']) #创建一个序列s
d = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c']) #创建一个表
pd.read_csv('data.csv',encoding = 'utf-8') #读取csv文件,一般用encoding指定编码
pd.read_excel('data.xls') #读取Excel文件,创建DataFrame

Scikit-Learn

Scikit-Learn是python下强大的机器学习工具包,包括数据预处理、分类、回归、聚类、预测和模型分析等。
创建一个机器学习很简单:

代码4 Scikit-Learn基本操作
from sklearn.linear_model import LinearRegression #导入线性回归模型
model = LinearRegression() #建立线性回归模型
model.fit(X,y) #训练监督模型
model.predict(X_new) #预测新样本
2019-03-28 21:56:03 qq_42642945 阅读数 196

广泛被应用的数据分析

谷歌的数据分析可以预测一个地区即将爆发的流感,从而进行针对性的预防;淘宝可以根据你浏览和消费的数据进行分析,为你精准推荐商品;口碑极好的网易云音乐,通过其相似性算法,为不同的人量身定制每日歌单……

数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……,大到企业的销售、运营数据,产品的生产数据,交通网络数据……

如何从海量数据中获得别人看不见的知识,如何利用数据来武装营销工作、优化产品、用户调研、支撑决策,数据分析可以将数据的价值最大化。

数据分析人才热度也是高居不下,一方面企业的数据量在大规模的增长,对于数据分析的需求与日俱增;另一方面,相比起其他的技术职位,数据分析师的候选者要少得多。
在这里插入图片描述
数据分析师应该具备哪些技能

我们从拉勾上找了一些最具有代表性的数据分析师职位信息,来看看薪资不菲的数据分析师,到底需要哪些技能。(具体自己去拉钩查询总结)

其实企业对数据分析师的基础技能需求差别不大,可总结如下:

  • SQL数据库的基本操作,会基本的数据管理
  • 会用Excel/SQL做基本的数据分析和展示
  • 会用脚本语言进行数据分析,Python or R
  • 有获取外部数据的能力,如爬虫
  • 会基本的数据可视化技能,能撰写数据报告
  • 熟悉常用的数据挖掘算法:以回归分析为主

数据分析的流程

其次是数据分析的流程,一般可以按“数据获取-数据存储与提取-数据预处理-数据建模与分析-数据可视化”这样的步骤来实施一个数据分析项目。按照这个流程,每个部分需要掌握的细分知识点如下:

在这里插入图片描述

高效的学习路径是什么?就是数据分析的这个流程。按这样的顺序循序渐进,你会知道每个部分需要完成的目标是什么,需要学习哪些知识点,哪些知识是暂时不必要的。

接下来我们分别从每一个部分讲讲具体应该学什么、怎么学。

数据获取:公开数据、Python爬虫

外部数据的获取方式主要有以下两种。

公开数据:

第一种是获取外部的公开数据集,一些科研机构、企业、政府会开放一些数据,你需要到特定的网站去下载这些数据。这些数据集通常比较完善、质量相对较高。给大家推荐一些常用的可以获取数据集的网站:

UCI:加州大学欧文分校开放的经典数据集,被很多数据挖掘实验室采用。

http://archive.ics.uci.edu/ml/datasets.html

国家数据:数据来源于中国国家统计局,包含了我国经济民生等多个方面的数据。

http://data.stats.gov.cn/

CEIC:超过128个国家的经济数据,能精确查找GDP、进出口零售,销售等深度数据。

http://www.ceicdata.com/zh-hans

中国统计信息网:国家统计局官方网站,汇集了国民经济和社会发展统计信息。

http://www.tjcn.org/

优易数据:由国家信息中心发起,国内领先的数据交易平台,很多免费数据。

http://www.youedata.com/

另一种获取外部数据的方式就是爬虫。

爬虫:

比如你可以通过爬虫获取招聘网站某一职位的招聘信息,爬取租房网站上某城市的租房信息,爬取豆瓣评分评分最高的电影列表,获取知乎点赞排行、网易云音乐评论排行列表。基于互联网爬取的数据,你可以对某个行业、某种人群进行分析。

在爬虫之前你需要先了解一些 Python 的基础知识:元素(列表、字典、元组等)、变量、循环、函数………

以及,如何用 Python 库(urllib、BeautifulSoup、requests、scrapy)实现网页爬虫。如果是初学,建议从urllib+BeautifulSoup开始。

掌握基础的爬虫之后,你还需要一些高级技巧,比如正则表达式、使用cookie信息、模拟用户登录、抓包分析、搭建代理池等等,来应对不同网站的反爬虫限制。

常用的的电商网站、问答网站、二手交易网站、婚恋网站、招聘网站等,都可以爬到非常有价值的数据。

数据存取:SQL语言

在应对万以内的数据的时候,Excel对于一般的分析没有问题,一旦数据量大,就会力不从心,数据库就能够很好地解决这个问题。而且大多数的企业,都会以SQL的形式来存储数据,如果你是一个分析师,也至少要懂得SQL的操作,能够查询、提取公司的数据。

SQL作为最经典的数据库工具,为海量数据的存储与管理提供可能,并且使数据的提取的效率大大提升。你需要掌握以下技能:

  • 提取特定情况下的数据:企业数据库里的数据一定是大而繁复的,你需要提取你需要的那一部分。比如你可以根据你的需要提取2017年所有的销售数据、提取今年销量最大的50件商品的数据、提取上海、广东地区用户的消费数据……,SQL可以通过简单的命令帮你完成这些工作。
  • 数据库的增、删、查、改:这些是数据库最基本的操作,但只要用简单的命令就能够实现,所以你只需要记住命令就好。
  • 数据的分组聚合、如何建立多个表之间的联系:这个部分是SQL的进阶操作,多个表之间的关联,在你处理多维度、多个数据集的时候非常有用,这也让你可以去处理更复杂的数据。

SQL这部分比较简单,主要是掌握一些基本的语句。当然,还是建议你找几个数据集来实际操作一下,哪怕是最基础的查询、提取等。

数据预处理:Python(pandas)

很多时候我们拿到的数据是不干净的,数据的重复、缺失、异常值等等,这时候就需要进行数据的清洗,把这些影响分析的数据处理好,才能获得更加精确地分析结果。

比如销售数据,有一些渠道的销售是没有及时录入的,有一些数据是记录重复的。比如用户行为数据,有很多无效的操作对分析没有意义,就需要进行删除。

那么我们需要用相应的方法去处理,比如残缺数据,我们是直接去掉这条数据,还是用临近的值去补全,这些都是需要考虑的问题。

对于数据预处理,学会 pandas (Python包)的用法,应对一般的数据清洗就完全没问题了。需要掌握的知识点如下:

  • 选择:数据访问(标签、特定值、布尔索引等)
  • 缺失值处理:对缺失数据行进行删除或填充
  • 重复值处理:重复值的判断与删除
  • 异常值处理:清除不必要的空格和极端、异常数据
  • 相关操作:描述性统计、Apply、直方图等
  • 合并:符合各种逻辑关系的合并操作
  • 分组:数据划分、分别执行函数、数据重组
  • Reshaping:快速生成数据透视表

网上有很多 pandas 的教程,主要是一些函数的应用,也都非常简单,可查 pandas 官方文档。

概率论及统计学知识

数据整体分布是怎样的?什么是总体和样本?中位数、众数、均值、方差等基本的统计量如何应用?如何在不同的场景中做假设检验?数据分析方法大多源于统计学的概念,所以统计学的知识也是必不可少的。需要掌握的知识点如下:

  • 基本统计量:均值、中位数、众数、百分位数、极值等
  • 其他描述性统计量:偏度、方差、标准差、显著性等
  • 其他统计知识:总体和样本、参数和统计量、ErrorBar
  • 概率分布与假设检验:各种分布、假设检验流程
  • 其他概率论知识:条件概率、贝叶斯等

有了统计学的基本知识,你就可以用这些统计量做基本的分析了。通过可视化的方式来描述数据的指标,其实可以得出很多结论了:比如排名前100的是哪些,平均水平是怎样的,近几年的变化趋势如何……

你可以使用 Seaborn、matplotlib 等(python包)做一些可视化的分析,通过各种可视化统计图,并得出具有指导意义的结果。

Python 数据分析

如果你有一些了解的话,就知道目前市面上其实有很多 Python 数据分析的书籍,但每一本都很厚,学习阻力非常大。但其实真正最有用的那部分信息,只是这些书里很少的一部分。

比如掌握回归分析的方法,通过线性回归和逻辑回归,其实你就可以对大多数的数据进行回归分析,并得出相对精确地结论。这部分需要掌握的知识点如下:

  • 回归分析:线性回归、逻辑回归
  • 基本的分类算法:决策树、随机森林……
  • 基本的聚类算法:k-means……
  • 特征工程基础:如何用特征选择优化模型
  • 调参方法:如何调节参数优化模型
  • Python 数据分析包:scipy、numpy、scikit-learn等

在数据分析的这个阶段,重点了解回归分析的方法,大多数的问题可以得以解决,利用描述性的统计分析和回归分析,你完全可以得到一个不错的分析结论。

当然,随着你实践量的增多,可能会遇到一些复杂的问题,你就可能需要去了解一些更高级的算法:分类、聚类。

然后你会知道面对不同类型的问题的时候更适合用哪种算法模型,对于模型的优化,你需要去学习如何通过特征提取、参数调节来提升预测的精度。 这就有点数据挖掘和机器学习的味道了,其实一个好的数据分析师,应该算是一个初级的数据挖掘工程师了。

你可以通过 Python 中的 scikit-learn 库来实现数据分析、数据挖掘建模和分析的全过程。

系统实战与数据思维

到这个时候,你就已经具备了数据分析的基本能力了。但是还要根据不同的案例、不同的业务场景进行实战,练习解决实际问题的能力。

上面提到的公开数据集,可以找一些自己感兴趣的方向的数据,尝试从不同的角度来分析,看看能够得到哪些有价值的结论。

你也可以从生活、工作中去发现一些可用于分析的问题,比如上面说到的电商、招聘、社交等平台等数据中都有着很多可以挖掘的问题。

开始的时候,你可能考虑的问题不是很周全,但随着你经验的积累,慢慢就会找到分析的方向,有哪些一般分析的维度,比如Top榜单、平均水平、区域分布、同比环比、相关性分析、未来趋势预测等等。随着经验的增加,你会有一些自己对于数据的感觉,这就是我们通常说的数据思维了。

2020-02-15 07:45:13 u010199413 阅读数 393

本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法

你将会学习到如何使用python做基本的数据分析

你还可以了解机器学习算法的原理和使用

说明

先说一段题外话。我是一名数据工程师,在用SAS做分析超过5年后,决定走出舒适区,寻找其它有效的数据分析工具,很快我发现了Python!

我非常喜欢编程,这是我真正喜欢做的事情。事实证明,编程并没有想象中的那么难。

我在一周之内学习了Python的基本语法,接着我一方面继续深入探索Python,另一方面帮助其他人学习这门语言。Python最初是一门简单的脚本语言,但随着Python社区的不断发展壮大,越来越多的开发者参与到Python工具库开发中来,所以Python拥有极其丰富的数据科学第三方库。

内容目录

1、Python数据分析的基本概况

为何使用Python做数据分析?

Python2.7还是Python3.7?

如何安装Python?

使用Python运行一段简单的代码

如何使用Jupyter notebook

2、Python数据结构和库

Python数据结构

Python循环结构和判断语句

Python库

3、使用Pandas做探索性分析

Series和DataFrame数据结构介绍

具体数据集案例分析

4、Numpy基本概念

Numpy常见函数使用

5、使用Pandas和numpy做数据清洗

处理数据集中的空值

如何使用apply方法?

6、使用Matplotlib绘制图表

Matplotlib介绍

使用Matplotlib绘制简单的柱状图

7、使用Scikit-learn建立预测模型

逻辑回归算法

决策树算法

随机森林算法

1、Python数据分析的基本概况

为何使用Python做数据分析?

最近几年,Python用作数据分析语言引起了非常多的关注,一度超越R成为最受欢迎的数据科学工具。作为Python的使用者,我支持Python作为数据分析工具有以下理由:

开源-免费安装使用

语言简洁,是一门真正的强大的编程语言

非常强大的在线社区

学习门槛低

极其丰富的第三方数据科学库

但它也有一些缺点:

Python是一种解释性语言而非编译性,速度相对比较慢。但是考虑到在学习和代码上节省的时间,Python依然是不二的选择。

Python 2.7还是Python 3.7?

很多初学者还在纠结选择Python 2.7还是Python 3.7?这两个版本有非常大的差异,简直就是两种语言。它们各有各的优缺点,取决于你使用的需求。

为什么Python 2.7

绝对优势的社区支持!Python 2.x诞生于2000年,已经被使用快20年,许多公司依然在使用Python 2.7

丰富的第三方库!目前绝大部分第三方库都是建立在Python 2.x基础上的,很多库并不支持Python 3.x版本。如果你将Python用于特定的应用程序,如高度依赖外部模块的web开发,那么建议使用Python 2.7

为什么Python 3.7

语法更加简洁和快速。Python开发人员改进了Python 2.x的缺点,Python 3.x代表了Python未来发展的方向

Python 2.7 只维护到2020年

Python官方建议直接学习Python 3.x

如果将Python作为数据科学工具,我建议使用Python 3.x,因为基本上所有的数据科学第三方库都已经支持Python 3.x。当然选择哪一个版本不是目的,应当专注的是如何使用Python更好地服务于数据科学。

如何安装Python?

这里两种安装方法可供参考:

直接去Python官网下载Python3.7安装包,再选择安装自己需要的第三方库和编辑器

或者,你不想这么麻烦,你可以选择安装Anaconda,这是一个开源的Python发行版本,其预装了180多个第三方库和依赖包

第二种方法包含了数据科学用到的大部分工具包,为你省去很多安装时间。这也是本教程建议初学者使用的安装方法 。

选择Python开发环境

一旦你安装好了python,就需要选择开发环境用于Python编程,这里有四个常用选择:

终端交互模式

IDLE(默认环境)

其它IDE,如pycharm

Jupyter notebook(ipython)

IDLE(默认环境)

这里不对它们作具体比较,读者可自行上网查询,选择什么样的开发环境取决于你的需求。

我建议初学者使用Jupyter notebook(ipython)作为Python数据分析的开发环境。Jupyter Notebook 是一个交互式笔记本,本质是一个 Web 应用程序,便于创建和共享程序文档,支持实时代码,数学方程,可视化和markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式。

本教程也是使用Jupyter Notebook 作为代码环境。

Jupyter Notebook编程界面

使用Python运行一段简单的代码

如何使用Jupyter Notebook

Anaconda预装了Jupyter Notebook库,所以安装Anaconda后就可以直接使用Jupyter Notebook。

启动Jupyter Notebook有两种方法,你可以在命令行中键入jupyter notebook再按enter键,便可以进入Jupyter Notebook环境,记住不要关闭命令行窗口,否则Jupyter环境会失效。

命令行键入jupyter notebook

还可以在开始菜单Anaconda文件夹中直接双击Jupyter Notebook

然后进入Jupyter Notebook主界面,点击New新建,点击Python 3,就可以开始愉快的编程了。

Jupyter Notebook主界面

notebook界面

你可以修改该notebook的名字,添加或删除代码编辑框,使用“Shift + Enter” 或者“Ctrl + Enter”快捷键运行代码。具体功能快捷键这里不做赘述,可以去Jupyter Notebook 快捷键 查看。

2、Python数据结构和库

Python数据结构

接下来要讲到Python的数据结构,你应该尽可能熟悉它,因为在接下来的数据分析代码中会经常用到这些数据结构。

字符串

Python 可以操作字符串。字符串有多种形式,可以使用单引号('……'),双引号("……")都可以获得同样的结果2。反斜杠\可以用来转义:

字符串示例

列表

Python 中可以通过组合一些值得到多种复合数据类型。其中最常用的列表,可以通过方括号括起、逗号分隔的一组值得到。一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同:

列表示例

元组

可以看到列表和字符串有很多共同特性,例如索引和切片操作。Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

元组示例

字典

另一个非常有用的 Python 內置数据类型是字典。字典在其他语言里可能会被叫做 联合内存 或 联合数组。与以连续整数为索引的序列不同,字典是以 关键字 为索引的,关键字可以是任意不可变类型,通常是字符串或数字。如果一个元组只包含字符串、数字或元组,那么这个元组也可以用作关键字。但如果元组直接或间接地包含了可变对象,那么它就不能用作关键字。列表不能用作关键字,因为列表可以通过索引、切片或 append() 和 extend() 之类的方法来改变。

理解字典的最好方式,就是将它看做是一个 键: 值 对的集合,键必须是唯一的(在一个字典中)。一对花括号可以创建一个空字典:{} 。另一种初始化字典的方式是在一对花括号里放置一些以逗号分隔的键值对,而这也是字典输出的方式。

以下是使用字典的一些简单示例:

字典示例

Python循环结构和判断语句

for循环

和大多数编程语言一样,Python也有for循环结构,其被广泛使用在迭代方法中。

Python 中的for语句与你在 C 或 Pascal 中可能用到的有所不同。 Python 中的for语句并不总是对算术递增的数值进行迭代(如同 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如同 C),而是对任意序列进行迭代(例如列表或字符串),条目的迭代顺序与它们在序列中出现的顺序一致。

如果在循环内需要修改序列中的值(比如重复某些选中的元素),推荐你先拷贝一份副本。对序列进行循环不代表制作了一个副本进行操作。切片操作使这件事非常简单:

如果写成for w in words:,这个示例就会创建无限长的列表,一次又一次重复地插入defenestrate。

range函数

如果你确实需要遍历一个数字序列,内置函数range()会派上用场。它生成算术级数:

if判断语句

可能最为人所熟知的编程语句就是if语句了,这是python中的判断语句。

使用形式为if ... elif ... else ...

可以有零个或多个elif部分,以及一个可选的else部分。 关键字 'elif' 是 'else if' 的缩写,适合用于避免过多的缩进。 一个if...elif...elif... 序列可以看作是其他语言中的switch或case语句的替代。

现在你熟悉了Python中的循环结构和判断语句,可以更进一步去学习更多的语法知识。

如果每做一件事都需要从头开始写代码,那么这将是一场噩梦,比如你想要对一个列表里数字进行加法运算,难道还要一个一个数字加起来吗?这样的话,你肯定不想学习python了。庆幸的是,python有很多工具库,可以帮助我们更加直接有效地解决问题。

例如,求数学中的阶乘,你可以很简单的导入math模块,使用已经编译好的阶乘函数:

当然在使用函数之前,你必须要导入库和函数。话不多说,一起来探索更多的Python库吧!

Python库

在学习更酷炫实用的Python库之前,第一步要知道什么是Python库。

Python库是一个相关功能模块的集合,里面包含各种函数方法,用来解决复杂的问题。

这些库分为两类:标准库第三方库,标准库是Python内置库,无需再安装,如math、range;第三方库需要另外安装,如jupyter、pandas、numpy

安装第三方库

安装第三方库有两种方法,第一种是pip方法,pip是Python包管理工具,自带无需安装,提供了对Python 库的查找、下载、安装、卸载的功能。

如果想安装pandas库,你可以在命令行输入:

pip install pandas

接下来等待自行下载安装。

第二种是手动安装,在python库集合里下载相关库文件并安装。

导入库和库函数

使用库之前,需要将其导入Python环境。同样有两种方法可以做到(以math库为例):

import math

或者

from math import *

第一种方法,导入整个库,如果你需要使用库中的某个函数,比如阶乘函数factorial,那么,需要用math.factorial()形式。

第二种方法直接导入了math库的所有方法和函数,直接factorial()就可以了。

建议使用第一种方法,用什么导入什么,不浪费。

最常用的数据科学库列表

numpy它是一个由多维数组对象和用于处理数组的例程集合组成的库,里面包含了大量的计算函数,可以很轻松的进行科学计算。

scipy科学计算的另一个核心库是 SciPy。它基于 NumPy,其功能也因此得到了扩展。SciPy 主数据结构又是一个多维数组,由 Numpy 实现。这个软件包包含了帮助解决线性代数、概率论、积分计算和许多其他任务的工具。此外,SciPy 还封装了许多新的 BLAS 和 LAPACK 函数。

pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,具备强大的数据展示功能。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

matplotlib:是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。只需几行代码即可生成绘图,直方图,功率谱,条形图,误差图,散点图等。

scikit-learn是一个机器学习库,可以对数据进行分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器学习方法。

StatsModels:Statsmodels 是一个 Python 模块,它为统计数据分析提供了许多机会,例如统计模型估计、执行统计测试等。在它的帮助下,你可以实现许多机器学习方法并探索不同的绘图可能性。

Seaborn:Seaborn 本质上是一个基于 matplotlib 库的高级 API。它包含更适合处理图表的默认设置。此外,还有丰富的可视化库,包括一些复杂类型,如时间序列、联合分布图(jointplots)和小提琴图(violin diagrams)。

Plotly:Plotly 是一个交互可视化库,它可以让你轻松构建复杂的图形。该软件包适用于交互式 Web 应用程,可实现轮廓图、三元图和三维图等视觉效果。

Bokeh:Bokeh 库使用 JavaScript 小部件在浏览器中创建交互式和可缩放的可视化。该库提供了多种图表集合,样式可能性(styling possibilities),链接图、添加小部件和定义回调等形式的交互能力,以及许多更有用的特性。

Scrapy:Scrapy 是一个用来创建网络爬虫,扫描网页和收集结构化数据的库。此外,Scrapy 可以从 API 中提取数据。由于该库的可扩展性和可移植性,使得它用起来非常方便。

TensorFlow:TensorFlow 是一个流行的深度学习和机器学习框架,由 Google Brain 开发。它提供了使用具有多个数据集的人工神经网络的能力。在最流行的 TensorFlow应用中有目标识别、语音识别等。在常规的 TensorFlow 上也有不同的 leyer-helper,如 tflearn、tf-slim、skflow 等。

Keras:Keras 是一个用于处理神经网络的高级库,运行在 TensorFlow、Theano 之上,现在由于新版本的发布,还可以使用 CNTK 和 MxNet 作为后端。它简化了许多特定的任务,并且大大减少了单调代码的数量。然而,它可能不适合某些复杂的任务。

requests:requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。

Blaze:Blaze生态系统为python用户对大数据提供了高效计算的高层接口,Blaze整合了包括Python的Pandas、NumPy及SQL、Mongo、Spark在内的多种技术,使用Blaze能够非常容易地与一个新技术进行交互。

现在你熟悉了Python了Python数据结构和库的使用,接下来要用这些知识去解决一些简单的问题。比如说利用pandas去做数据探索,用matplotlib可视化图表等等。

3、使用Pandas做探索性分析

为了更好地探索数据中的奥秘,接下来要介绍一位重量级嘉宾-Pandas

哈哈,开个玩笑。这里的pandas不是国宝大熊猫,而是python的一个国宝级第三方数据科学库。就像前面介绍过的,pandas具备强大的数据展示功能, 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。是pandas的出现奠定了python在数据科学领域霸主的地位。

接下来,我们要使用pandas读取数据集,然后进行数据探索性分析(EDA),就是研究数据各个变量或变量之间的统计学关系。

pandas的数据结构

pandas有两种数据结构,Series和DataFrame。

Series类似一维数组(只有一列),由数据和索引组成,可以保存任何数据类型(整数,字符串,浮点数,Python对象等)。

DataFrame则类似二维数组,像excel表格,有一个或多个变量(多列)。

当我们用pandas读取数据集的时候,数据会以DataFrame的格式保存在内存里,你可以对数据的行和列进行各种函数操作(如分组、聚合、拼接、运算)。类似SQL能做的,pandas都能做,SQL不能做的,pandas也能做。

数据集

这里数据集就用经典的titanic(泰坦尼克)数据集,在这里 下载。

该数据集规格为891*12,也就是891行,12列。这12个变量包括乘客年龄、性别、姓名、是否存活等等,了解即可。

读取数据

来看看数据集长什么样

import pandas as pd #导入pandas库

data = pd.read_csv(r'train.csv') #读取数据

data.head(10) #查看前10行数据

数据DataFrame格式

数据统计学描述

数据描述有两个函数(info和describe)来做,通常这是数据探索的开始!

data.info() #查看数据集每个变量的非空长度、类型,以及整个数据集的大小

info函数对数据的描述

data.describe()#数据统计学描述函数,查看每一个变量的统计学情况,包括最大值、标准差等

describe函数对数据的描述

取数据列

如果我想拎出数据集的某一列或几列怎么办

data['Age'] # 取出age这一列数据

data[['Age','Name']] # 取出age和name两列

绘制图表

因为需要在notebook上绘制图表并显示,所以需要在代码行添加魔法命令使得notebook上显示图像:

%matplotlib inline

pandas库自带绘图功能,你可以绘制简单的统计学图表,比如我想绘制age的分布直方图:

data['Age'].hist(bins=10) # hist为直方图函数,bins是参数,可以调节年龄分多少段数

age字段直方图



作者:Python大数据分析
链接:https://www.jianshu.com/p/e7d1cf061074
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Python数据分析

阅读数 55

没有更多推荐了,返回首页