Python数据分析之Pandas库(笔记)

Pandas数据结构

pandas有两个基本的数据结构:Series和DataFrame。
1.1 建立Series数据
须要引入pandas模块:import pandas as pd
须要引入Series和DataFrame: from pandas import Series,DataFrame
Python数据分析之Pandas库(笔记)
Series数据:索引在左,值在右
Series有values和index属性,可返还值数据的数据形式和索引对象
Series具备索引对象,可经过其获取Series的单个或者一组值
Python数据分析之Pandas库(笔记)
Series运算都会保留索引和值之间的连接
Series数组中的索引和值一一对应,相似于Python字典数据,因此也能够经过字典数据来建立Series
Series对象和索引都有name属性,这样咱们就能够给Series定义名称,让Series更具可读性
Python数据分析之Pandas库(笔记)
1.2 建立DataFrame数据
DataFrame数据有行索引和列索引,行索引相似于Excel表格中每行的编号(没有指定索引的状况下),列索引相似于Excel表格的列名(一般也可称为字段)
Python数据分析之Pandas库(笔记)
因为字典是无序的,所以能够经过columns指定列索引的排列顺序
当没有指定行索引的状况下,会使用0到N-1(N为数据的长度)做为行索引,这里也可使用其余数据做为行索引。
经过values属性能够将DataFrame数据转换为二维数组。数组

Python数据分析之Pandas库(笔记)
下表中提供了部分经常使用的为建立DataFrame数据可传入的数据类型。
Python数据分析之Pandas库(笔记)
1.3 索引对象
Series的索引和DataFrame的行和列索引都是索引对象,用于负责管理轴标签和元数据。
索引对象是不能够进行修改的,若是修改就会报错
Python数据分析之Pandas库(笔记)数据结构

2、pandas索引操做
2.1 从新索引
从新索引并非给索引从新命名,而是对索引从新排序,若是某个索引值不存在的话,就会引入缺失值(NaN)。
对于DataFrame数据来讲,行和列索引都是能够从新索引的。
Python数据分析之Pandas库(笔记)
须要对插入的缺失值进行填充的话,可经过method参数来实现,参数值为ffill或pad时为向前填充,参数值为bfill或backfill时为向后填充。
Python数据分析之Pandas库(笔记)
reindex函数的各参数使用说明
Python数据分析之Pandas库(笔记)
2.2 更换索引
在DataFrame数据中,若是不 但愿使用默认行索引的话,可 在建立的时候经过index参数来 设置行索引。有时咱们但愿将 列数据做为行索引,这时能够 经过set_index方法来实现
与set_index方法相反的方法是reset_index(恢复索引)方法
Python数据分析之Pandas库(笔记)
对DataFrame数据,排序以后其行索引会改变
Python数据分析之Pandas库(笔记)
2.3 索引和选取
注意:若是是利用索引标签切片,其尾端是被包含的。
一、 选取列app

注意:选取列不能使用切片,由于切片用于选取行数据

Python数据分析之Pandas库(笔记)
二、选取行
Python数据分析之Pandas库(笔记)
注意:获取单独的几行,经过loc和iloc方法能够实现。loc方法是按行索引标签选取数据;iloc方法是按行索引位置选取数据
Python数据分析之Pandas库(笔记)
三、选取行和列
注意:ix方法同时支持索引标签和索引位置来进行行数据的选取,新版的Python中,ix已被废弃,用ix选取行列的方式能够用以下代码代替
Python数据分析之Pandas库(笔记)
四、布尔选择
筛选出性别为female的数据,这时就须要经过布尔选择来完成。
一样也适用于不等于符号(!=)、负号(-)、和(&)、或(|)。
Python数据分析之Pandas库(笔记)
2.四、操做行和列
一、增长 经过append函数传入字典结构数据便可
Python数据分析之Pandas库(笔记)
为一个不存在的列赋值,便可建立一个新列
Python数据分析之Pandas库(笔记)
二、经过drop方法能够删除指定轴上的信息
Python数据分析之Pandas库(笔记)
三、经过rename函数,可完成因为某些缘由致使的标签录入错误的问题
Python数据分析之Pandas库(笔记)ide

3、pandas数据运算
3.一、算数运算
pandas的数据对象在进行算术运算时,若是有相同索引对则进行算术运算,若是没有则会引入缺失值,这就是数据对齐
一、Series数据算术运算
Python数据分析之Pandas库(笔记)
二、DataFrame数据算术运算
Python数据分析之Pandas库(笔记)
三、DataFrame和Series数据在进行运算时,先经过Series的索引匹配到相应的DataFrame列索引上,而后沿行向下运算(广播)。
Python数据分析之Pandas库(笔记)
3.二、函数应用和映射
map函数,将函数套用在Series的每一个元素中;
apply函数,将函数套用到DataFrame的行与列上;
applymap函数,将函数套用到DataFrame的每一个元素上
一、 须要把price列的“元”字去掉,这时就须要用到map函数
Python数据分析之Pandas库(笔记)
二、apply函数
注意:lambda为匿名函数,和定义好的函数同样,能够节省代码量
Python数据分析之Pandas库(笔记)
三、applymap函数可做用于每一个元素,便于对整个DataFrame数据进行批量处理
Python数据分析之Pandas库(笔记)
3.三、排序
一、经过sort_index函数可对索引进行排序,默认状况为升序
Python数据分析之Pandas库(笔记)
二、经过sort_values方法可对值进行排序
Python数据分析之Pandas库(笔记)
pandas排序函数sort_values: pandas中的sort_values()函数原理相似于SQL中的order by,能够将数据 集依照某个字段中的数据进行排序,该函数便可根据指定列数据也可根据指定 行的数据排序。用法以下: DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
Python数据分析之Pandas库(笔记)
3.四、汇总与统计
在DataFrame数据中,经过sum函数能够对每列进行求和汇总
指定轴方向,经过sum函数可按行汇总
Python数据分析之Pandas库(笔记)
describe方法可对每一个数值型列进行统计,常常用于对数据的初步观察时使用函数

count为总数

mean为算数平均数

std为标准差

min为最小值

25%, 50%和75%是对应的四分位数

max为最大值

Python数据分析之Pandas库(笔记)
3.五、惟一值和值计数
在Series中,经过unique函数能够获取不重复的数组。经过values_counts方法可统计每一个值出现的次数。
注意:对于DataFrame的列而言,unique函数和value_counts方法一样适用
Python数据分析之Pandas库(笔记)3d

4、层次化索引
4.一、层次化索引简介
层次化索引就是轴上有多个级别索引
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)
4.二、重排分级顺序
经过swaplevel方法能够对层次化索引进行重排。
Python数据分析之Pandas库(笔记)
4.三、汇总统计
在对层次化索引的pandas数据进行汇总统计时,能够经过level参数指定在某层次上进行汇总统计
Python数据分析之Pandas库(笔记)
5、 pandas可视化
5.一、线形图
Pandas库中的Series和DataFrame中都会有绘制各种图表的plot方法, 默认状况绘制的是线形图。
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib as mpl
import matplotlib.pyplot as plt # 导入matplotlib库
%matplotlib inline
注意: %matplotlib inline为魔法函数,使用该函数绘制的图片会直接显示在Notebook中。
建立一个Series对象
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)
创 建 DataFrame数据。
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)对象

5.二、柱状图
柱状图常描绘各种别之间的关系
经过pandas绘制柱状图,只须要在plot函数中加入kind=‘bar’,若是类别较多,可绘制水平柱状图(kind=‘barh’)
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)
设置plot函数的stacked参数,能够绘制堆积柱状图。
说明:plot函数的alpha参数可设置颜色透明度。
Python数据分析之Pandas库(笔记)
5.三、直方图和密度图
直方图用于频率分布,y轴可为数值或 者比率。直方图在统计分析中是常常使 用的,绘制数据的直方图,能够看出其 大概分布规律。
经过hist方法绘制直方图
注意:经过设置grid参数可在图表中添加网格 ;bins参数是将值分为多少段,默认为10。
Python数据分析之Pandas库(笔记)
核密度估计(Kernel Density Estimate,KDE)是对真实密度的 估计,其过程是将数据的分布近似为一组核(如正态分布)。
通 过plot函数的kind=‘kde’可进行绘制。
Python数据分析之Pandas库(笔记)
5.四、散点图
散点图主要用来表现数据之间的规律。
绘制散点图,kind='scatter'
Python数据分析之Pandas库(笔记)
小总结:
一、plot方法默认状况,绘制的是线形图;
二、增长参数kind=’bar’或kind=’barh’绘制柱状图或水平柱状图,设置plot的stacked参数能够绘制堆积柱状图;
三、当kind=’kde’能够绘制KDE图,即密度图;
四、当kind=’scatter’能够绘制散点图;
五、还有一个特殊的直方图,使用的是hist方法。blog

6、综合示例—小费数据集
数据分析的流程一般状况下分为5步。
(1)收集数据。在这一步中,须要对收集的数据有必定的认知,对各字段的 含义和背景知识都要有着足够的理解。
(2)定义问题。根据各自的行业和业务知识,对数据定义多个待解决的问题 。
(3)数据清洗与整理。因为各类问题,获取的数据不够“干净” ,需经过各 种手段对数据进行清洗与整理,以便获得准确的分析结果。
(4)数据探索。经过可视化等手段,对数据进行分析和探索,得出结论。
(5)数据展现。这部分用于输出,或撰写数据分析报告、或汇报给上级、或 绘制PPT
举例:
小费数据集来源于Python第三方库seaborn(用于绘图)中自带 的数据,加载该数据集
Python数据分析之Pandas库(笔记)
注意:head函数会返回前5条数据,也可指定返回数据行数。
一、数据来源:
该小费数据为餐饮行业收集的数据。total_bill列为消费总金额; tip列为小费金额;sex列为顾客性别;smoker列为顾客是否抽 烟;day列为小费的星期;time列为聚餐的时间段;size列为聚 餐人数。
二、定义问题
小费金额与消费总 金额是否存在相关性?性别、是否吸烟、星期几、中/晚餐、聚 餐人数和小费金额是否有必定的关联?小费金额占消费总金额的 百分比服从正态分布?
三、数据清洗
首先对数据进行简单描述,看是否有缺失值或者异常值以及经过打印数据的info信息能够看出每列数据的类型 和缺失值
Python数据分析之Pandas库(笔记)
四、数据探索
分析小费金额和消费总金额是否有关联?
首先对小费金额与消费总金额进行分析,看看它们之间是否有关 联,经过下面代码绘制散点图。
Python数据分析之Pandas库(笔记)
经过上图能够看出,小费金额与消费总金额存在着正相关的关系 ,即小费的金额越多,给的消费也就越多。
分析性别是否和小费金额有必定的关联?
咱们再来看看性别不同是否影响小费的金额。这里使用柱状图 ,经过布尔选择男女性别,对小费数据进行平均后绘制柱状图
Python数据分析之Pandas库(笔记)
从柱状图中能够看出,女性小费金额少于男性小费金额。
分析日期(星期)是否和小费金额有必定的关联?
日期与小费的关 系,因为观察数据时只看到了前5行数据,经过unique函数看下 日期的惟一值有哪些。
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)
从柱状图中能够看出,周6、周日的小费比周4、周五 的小费高。
分析聚餐人数是否和小费金额有必定的关联?
Python数据分析之Pandas库(笔记)
Python数据分析之Pandas库(笔记)
从柱状图中能够看出,聚餐人数越多,小费金额越高排序

相关文章
相关标签/搜索