Python学习笔记(十七)——Pandas库
pandas与numpy的区别
chengji=[['', '期末', '期末'], ['张三',50, 80], ['李四', 60, 90], ['王老五', 70, 89]]
np.array(chengji)#array([['', '期末', '期末'],
#['张三', '50', '80'],
#['李四', '60', '90'],
#['王老五', '70', '89']], dtype='<U3')
上图是使用numpy得出的结果
dic={ ' 期 中 ':[50,60,70], ' 期 末':[80,90,89]}
pd.DataFrame(dic,index=['张三','李四','王老五'])
上图是使用pandas得出的结果
Pandas库简介
pandas官网
pandas扩展包的安装
- win+R打开命令行
- 输入pip install pandas
pandas扩展包的调用
import pandas as pd
pandas数据结构
pandas库的理解
Numpy | Pandas |
基础数据类型
|
扩展数据类型
|
关注数据的结构表达
|
关注数据的应用表达
|
维度:数据间的关系 |
数据与索引间的关系
|
相同操作,输出形式对比:
np.arange(4)#array([0,1,2,3])
pd.Series(np.arange(4))
#0 0
#1 1
#2 2
#3 3
#dtype: int32
可以看出使用pandas库可视化程度更高,能以比较清晰直观的形式展现处理后的数据
series对象类型
series对象的创建
dp.Serise(obj=None, index=None, dtype=None)
创建时注意事项
b=pd.Series([9,8,7],['a','b','c'])
#b
#a 9
#b 8
#c 7
#dtype: int64
>>> b.values
array([9, 8, 7], dtype=int64)
>>>b.index #索引
Index(['a', 'b', 'c'], dtype='object’)
>>> b.index.name='索引' #定义索引的名字
>>> b.name='Series对象' #对象名
>>> b
索引
a 9
b 8
c 7
Name: Series对象, dtype: int64
>>> b=pd.Series([9,8,7],['a','b','c'])
>>> b
a 9
b 8
c 7
dtype: int64>>> b[b>=b.median()]
a 9
b 8
dtype: int64>>> np.exp(b)
a 8103.083928
b 2980.957987
c 1096.633158
d 403.428793
dtype: float64
>>> b=pd.Series([9,8,7],['a','b','c'])
>>> b
a 9
b 8
c 7
dtype: int64>>> b['a']
9
>>> 'c' in b
True>>> b.get('a')
9
series常用函数
DataFrame对象类型
- DataFrame类型由共用相同索引的一组列组成。
- DataFrame是一个表格型的数据类型,每列值类型可以不同
- DataFrame既有行索引(index)、也有列索引(columns)
- DataFrame常用于表达二维数据,但可以表达多维数据。
DataFrame创建
pd.DataFrame(data=None, index=None, columns=None, dtype=None)
df=pd.DataFrame(np.random.randint(60,100,size=(2,3)),index=['期中','期末'],columns=['张三','李四','王老五'])>>> df.values
array([[70, 92, 72],
[60, 60, 88]])
>>> df.shape
(2,3)>>> df.index
Index(['期中', '期末'], dtype='object')
>>> df.columns
Index(['张三', '李四', '王老五'], dtype='object')>>> df.describe()
张三 李四 王老五
count 2.000000 2.000000 2.000000
mean 65.000000 76.000000 80.000000
std 7.071068 22.627417 11.313708
min 60.000000 60.000000 72.000000
25% 62.500000 68.000000 76.000000
50% 65.000000 76.000000 80.000000
75% 67.500000 84.000000 84.000000
max 70.000000 92.000000 88.000000
根据行列参数索引。
>>> df.['x']
a 0
b 3
c 6
Name: x, dtype: int32
根据整数位置参数索引
>>> df.iloc[1,:]
x 3
y 4
z 5
Name:b, dtype: int32
某个轴上拥有多个索引级别
>>> df.['x','z']
a 0 2
b 3 5
c 6 8
列索引
>>> df['qizhong']
张三 50
李四 60
王老五 70
Name: qizhong, dtype: int64
>>> df[['qizhong', 'qimo']]
qizhong qimo
张三 50 80
李四 60 90
王老五 70 89
行索引
>>> df.loc['张三']
qizhong 50
qimo 80
Name: 张三, dtype: int64
>>> df.loc[['李四', '张三']]
qizhong qimo
李四 60 90
张三 50 80
效果图
位置索引
df=pd.DataFrame(np.arange(16).reshape((4,4)),index=["a","b","c","d"],columns=["w","x","y","z"])
>>> df.loc['a':'c']
>>> df.iloc[:3, :]
w x y z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
>>> df[['w', 'y']]
>>> df.iloc[:, [0,2]]
w y
a 0 2
b 4 6
c 8 10
d 12 14
重新索引
删除指定索引
pd.drop(labels, axis=0)
>>> d
城市 环比 同比 定基
0 北京 101.5 120.7 121.4
1 上海 101.2 127.3 127.8
2 广州 101.3 119.4 120.0
3 深圳 102.0 145.5 125.3
4 沈阳 101.1 101.4 101.6
>>> d.drop(3)
城市 环比 同比 定基
0 北京 101.5 120.7 121.4
1 上海 101.2 127.3 127.8
2 广州 101.3 119.4 120.0
4 沈阳 101.1 101.4 101.6
>>> d.drop('同比', axis =1)
城市 环比 定基
0 北京 101.5 121.4
1 上海 101.2 127.8
2 广州 101.3 120.0
4 沈阳 101.1 101.6
Pandas库常用操作
实例
a=pd.DataFrame(np.arange(12).reshape((3,4)))
b=pd.DataFrame(np.arange(20).reshape((4,5)))
>>> a
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11>>> b
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
方法形式的运算
实例
>>> a
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11>>> b
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19#加法
>>> b.add(a, fill_value=100)
0 1 2 3 4
0 0.0 2.0 4.0 6.0 104.0
1 9.0 11.0 13.0 15.0 109.0
2 18.0 20.0 22.0 24.0 114.0
3 115.0 116.0 117.0 118.0 119.0#乘法
>>> b.mul(b, fill_value=0)
0 1 2 3 4
0 0.0 1.0 4.0 9.0 0.0
1 20.0 30.0 42.0 56.0 0.0
2 80.0 99.0 120.0 143.0 0.0
3 0.0 0.0 0.0 0.0 0.0
Series与Dataframe之间的计算
传播运算(标量运算)
>>> c=pd.Series(np.arange(3))
0 0
1 1
2 2
dtype: int32
>>> c+1
0 1
1 2
2 3
dtype: int32>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> a+1
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
>>> c=pd.Series(np.arange(3))
0 0
1 1
2 2
dtype: int32
>>> c+1
0 1
1 2
2 3
dtype: int32>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> a+1
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
算数运算(传播机制)
>>> c=pd.Series(np.arange(4))
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
比较运算规则
>>> c=pd.Series(np.arange(4))
>>> a=pd.DataFrame(np.arange(12).reshape((3,4)))
索引的排序
.sort_index(axis=0, ascending=True)
>>> b
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19>>> c=b.sort_index()
0 1 2 3 4
a 5 6 7 8 9
b 15 16 17 18 19
c 0 1 2 3 4
d 10 11 12 13 14>>> c.sort_index(axis=1,ascending=False)
4 3 2 1 0
a 9 8 7 6 5
b 19 18 17 16 15
c 4 3 2 1 0
d 14 13 12 11 10
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False)
a = [[9,3,1],[1,2,8],[1,0,5]]
data = pd.DataFrame(a, index=["0", "2", "1"], columns=["c", "a", "b"])
idx = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('a', 2), ('b', 2), ('b', 1), ('b', 1)])
idx.names = ['first', 'second']
df_multi = pd.DataFrame({'A': np.arange(6, 0, -1)}, index=idx)
汇总和计算描述统计
汇总和计算描述统计:累计统计分析函数
obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
serieris.unique():是以数组形式返回列的所有唯一值(特征的所有唯一值)
>>> uniques = obj.unique()
array(['c', 'a', 'd', 'b'], dtype=object)
>>> uniques = obj.nunique()
4
>>> obj.value_counts()
a 3
c 3
b 2
d 1
dtype: int64
函数映射
df['col2'] = df['col1'].map(lambda x: x**2)
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds
>>> name=["张三","李四 ","王五"]
>>> idx=["指标1","指标2","指标3","指标4"]
>>>df=pd.DataFrame(np.random.randint(67,80,12).reshape((3,4)),index=name,colum
ns=idx)
>>> df.apply(lambda x:((x-min(x))/(max(x)-min(x)),axis=1)
指标1 指标2 指标3 指标4
张三 70 70 72 77
李四 79 67 73 74
王五 67 74 69 724|V
指标1 指标2 指标3 指标4
张三 0.0 0.0 0.285714 1.000000
李四 1.0 0.0 0.500000 0.583333
王五 0.0 1.0 0.285714 0.714286
apply函数(对行列用函数处理)
传送门:Python全套学习笔记
Python学习笔记(十七)——Pandas库相关推荐
- python提示keyerror 13372,Python 学习笔记之—— Pandas 库
import numpy as np import pandas as pd 1. 基本的数据结构 1.1 Series Series 是一维的标记数组,可以容纳任意数据类型,比如整数.字符串.浮点数 ...
- 非理工科编程零基础文科生秒懂python学习笔记:pandas库数据表格创建和运算基础有哪些?
#dataframe的数据类型 #每行的数据类型可以不一样 #行索引为index 等同于excel表格最左边的1.2.3.4 #列索引为column 等同于excel表格最顶端的A|B|C|D|E # ...
- Python学习笔记:pandas初体验
Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...
- Python学习笔记:requests库
Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...
- python学习笔记之numpy库的使用——超详细
文章目录 NumPy介绍 一.如何创建 1.导入Numpy库,并命名为np: 2.查看版本 3.通过列表创建一维数组: 4.通过列表创建二维数组: 5.创建全为0的二维数组 6.创建全为1的三维数组 ...
- python学习笔记(常用库)
一.numpy 二.pandas 2.3 series结构 基本操作 import pandas as pdfandango = pd.read_csv('E:\\唐宇迪机器学习\Python库代码( ...
- python学习笔记(自定义库文件路径)
博主最近在弄接口自动化.主要是基于python自带的unittest框架.包括 Pubilc模块定义所有接口. Main模块根据业务需求重新封装接口便于测试. config文件导入测试业务的固定参数. ...
- Python学习笔记:Pandas应用
创建Dataframe的方法 pandas.DataFrame( data, index, columns, dtype, copy) 构造方法data:一组数据(ndarray.series, ma ...
- python中seaborn库_[Python学习笔记(四)] Seaborn库基础学习——01
用 matplotlib能够完成一些基本的图表操作,而 Seaborn 库可以让这些图的表现更加丰富. 1. import seaborn as sns 用于导入 seaborn 库,并取别名为 sn ...
- python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...
最新文章
- linux 位置参数数组,JavaScript数组详解
- 2.1.5 编码与调制
- NB-IoT标准落定 规模商用还需跨过成本关
- ElasticSearch(二)索引管理
- 【Pix4d精品教程】大疆精灵4A无人机航空摄影测量外业数据采集完整操作流程
- rocket mq 监听端口_浅谈业务流程中的mq使用方式
- [转载] java左移右移和无符号右移
- mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】
- 返回结果的HTTP状态码——《图解http》第四章
- signature=45ca03a07a2e888fb57b0d2c351110d7,Attention: Docket Number H054a Dec. 31,2004
- python文本数据处理_python 数据处理 对txt文件进行数据处理
- 面向接口编程在Java web 三层架构的应用与使用工厂模式解决问题
- BZOJ1812: [Ioi2005]riv(树形dp)
- 数控编程加工中心注意事项有哪些,你知道吗
- 华为面试状态码解密手把手教学
- markdown数学公式编辑指令大全
- 【源码分享】一键打开禅意生活——电子木鱼微信小程序源码分享
- ORACLE OGG同步时更新分区字段值的问题
- 烷烃同分异构体数目的计算
- 初学Python——马哥——Python相关理论