Pandas是基于NumPy的一种数据分析工具,提供了大量使我们快速便捷处理数据的函数和方法。

中文官网地址:https://www.pypandas.cn

Pandas基于两种数据类型:Series数组与DataFrame数据表。

Series对象(带索引index的一维数组)

import pandas as pd
from pandas import Series,DataFrame
import numpy as np

#创建Series数组
list1 = [1,2,3,4]
sel = Series(list1) #默认索引为从0开始的序列
sel = Series(data = [1,2,3,4],index = list('abcd')) #创建Series对象并创建索引 print(sel.values)#.values 拿到series中数据
print(sel.index)# .index 拿到series中索引
print(list(sel.iteritems()))#.iteritems()拿到series中键值对 #Series结构类似字典
#将字典转换为Series
dic = {"red":"100","black":"400","green":"300"}
se2 = Series(dic) #修改Series索引值
se1.index = list('dcba') #直接修改原Series的索引
#.reindex 返回一个新的Series 重新排序 缺失值用nan代替
se2 = se1.reindex(['a','b','c','d','e']) #Series值的获取,可通过索引和下标两种方式。
print(se1['b']) #通过index值获取
print(sel[1]) #通过下标
#通过切片获取值
print(se1[0:2]) #通过下标,左包含右不包含。
print(se1['a':'c']) #通过索引,左右都包含。

DataFrame对象(DataFrame是一种二维数据表结构,分为若干列和行,行索引index,列索引columns)

DataFrame的创建

df1 = DataFrame(np.random.randint(0,10,(4,4)),index = [1,2,3,4],columns = ['a','b','c','d']) #通过二维数组创建,指定参数Data,index和columns。

#通过字典创建DataFrame
dict = {
'province':['Guangzhou','Beijing','Shanghai','Fujian'],
'pop':[1.3,2.5,1.1,0.7],
'year':[2018,2018,2018,2018]
}
df2 = DataFrame(dict,index = [1,2,3,4])#字典中的key为列索引。

DataFrame中常用属性和方法

print(df.shape) #行数和列数
print(df.index.tolist()) #获取行索引
print(df.columns.tolist()) #获取列索引
print(df.ndim)#获取维度
print(df.info()) #.info()方法展示概述
print(df.head(2)) #显示头几行
print(df.tail(1)) #显示后几行

获取DataFrame数据

#获取DataFrame列

print(df['pop']) #获取列,每列都是Series对象

print(df[['pop','year']]) #获取多列

#获取DataFrame行

print(df[0:2]) #通过行下标切片的方式获取行

#通过loc和iloc方法获取数据

#.loc通过索引获取数据

#.loc获取列,切片方式。

df.loc[:,'pop'] #获取单列
df.loc[:,'pop':'province'] #通过切片获取连续列 #.loc获取行 df.loc[1] #获取单行
df.loc[1,:] #获取单行
df.loc[1:3,] #获取连续行,左右都包含。 #.iloc通过位置下标获取数据 df.iloc[0:2,0:2]

DataFrame修改index和columns

df = DataFrame(np.arange(9).reshape(3,3),index = ['bj','sh','gz'],columns = ['a','b','c'])

df.index = ['beijing','shanghai','guangzhou'] #直接修改属性值

df1 = df.rename(index = {'bj':"beijing"},columns = {'a':'A'}) #通过.rename方法修改index和columns

DataFrame中将列转换为行索引

df1 = DataFrame({"x":range(5),"y":range(5),'s':list("abcde"),"z":[1,2,3,4,5]})

#result = df1.set_index('s',drop = False) #将s列转换为行索引drop = False 保留作为索引的列
result = df1.set_index('s') result.index.name = None #通常将数据库中数据取出后 将id作为行索引
print(result)
s x y z
0 a 0 0 1
1 b 1 1 2
2 c 2 2 3
3 d 3 3 4
4 e 4 4 5
x y z
a 0 0 1
b 1 1 2
c 2 2 3
d 3 3 4
e 4 4 5

DataFrame中添加列

#在末尾直接添加列
df = pd.DataFrame([['snow','m',22],['tyrion','m',32],['sansa','f',18],['arya','f',14]],columns = ['name','gender','age']
df['score'] = [80,98,67,90] #在末尾添加一列
#通过添加列索引的方法添加列
column_name = df.columns.tolist() #将列名转换为列表
column_name.insert(2,'city') #在列表指定位置插入新的列索引
df = df.reindex(columns = column_name)#通过.reindex方法更新索引
df['city'] = ['beijing','shanxi','hubei','aomen'] #添加数据
#通过DataFrame中.insert方法添加列
df.insert(2,'score',[80,90,67,90]) #dataframe 提供insert方法 在指定位置添加列

DataFrame中添加行

#通过.append方法添加行
df = pd.DataFrame([['snow','m',22],['tyrion','m',32],['sansa','f',18],['arya','f',14]],columns = ['name','gender','age']
row = pd.DataFrame({'name':'fy','gender':'m','age':23},index = [0]) #生成带添加的行
df = df.append(row,ignore_index = True) #ignore_index = True 按照原来的索引

DataFrame创建多层索引

#1
df = pd.DataFrame(np.random.randint(0,150,size = (6,4)),
columns = ['zs','ls','ww','zl'],
index = [['a','a','b','b','c','c'],['期中','期末','期中','期末','期中','期末']]) #2
class1 = ['a','a','b','b','c','c']
class2 = ['期中','期末','期中','期末','期中','期末']
m_index2 = pd.MultiIndex.from_arrays([class1,class2])
df2 = pd.DataFrame(np.random.randint(0,150,(6,4)),index = m_index2) #3
class2 = ['a','b','c']
class1 = ['期中','期末']
m_index2 = pd.MultiIndex.from_product([class1,class2])
df3 = pd.DataFrame(np.random.randint(0,150,(6,4)),index = m_index2) 0 1 2 3
期中 a 79 22 5 2
b 47 44 25 80
c 40 61 131 60
期末 a 127 46 144 44
b 24 128 110 81
c 79 133 33 18

Tips:Pandas内容很多,还包括时间序列和分组聚合等,在实例中熟悉。

2020-04-04 16:28

Python库-Pandas的更多相关文章

  1. python库pandas

    由于在机器学习中经常以矩阵的方式来表现数据,那么我们就需要一种数据结构来存储和处理矩阵.pandas库就是这样一个工具. 本文档是一个学习笔记,记录一些常用的命令,原文:http://www.cnbl ...

  2. python库pandas简介

    pandas是基于numpy的数据分析模块,提供了大量标准模型和高效操作大型数据集所需要的工具. pandas主要提供了3种数据结构:1.Series,带标签的一维数组:2.DataFrame,带标签 ...

  3. 顶级Python库

    绝不能错过的24个顶级Python库 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 事实 ...

  4. Python数据分析库pandas基本操作

    Python数据分析库pandas基本操作2017年02月20日 17:09:06 birdlove1987 阅读数:22631 标签: python 数据分析 pandas 更多 个人分类: Pyt ...

  5. Python 数据处理库 pandas 入门教程

    Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...

  6. 教程 | 一文入门Python数据分析库Pandas

    首先要给那些不熟悉 Pandas 的人简单介绍一下,Pandas 是 Python 生态系统中最流行的数据分析库.它能够完成许多任务,包括: 读/写不同格式的数据 选择数据的子集 跨行/列计算 寻找并 ...

  7. Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)

    0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...

  8. python重要的第三方库pandas模块常用函数解析之DataFrame

    pandas模块常用函数解析之DataFrame 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 打开浏览器 ...

  9. 11个并不广为人知,但值得了解的Python库

    这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...

随机推荐

  1. 服务发现组件之 — Eureka

    前言 现在流行的微服务体系结构正在改变我们构建应用程序的方式,从单一的单体服务转变为越来越小的可单独部署的服务(称为微服务),共同构成了我们的应用程序.当进行一个业务时不可避免就会存在多个服务之间调用 ...

  2. win10安装ubuntu子系统和图形界面

    子系统可以很方便的调用windows的文件(在/mnt里就有各个盘),也可以在windows里用VScode编辑linux的文件.还是很方便的.也可以切出去用QQ微信. 安装子系统参考教程:https ...

  3. 适用于 macOS 下 2K 显示器开启 HiDPI 的简便解决方案

    前阵子入手了一款2k的显示器用于mbp的拓展屏幕,但由于苹果系统的严格限制,只有在4K及以上显示器上才能开启自带的HiDPI进行缩放以达到retina显示屏的效果.2k显示器下的字体会偏小发虚,使用1 ...

  4. java 锁 简介(转)

    转自 https://www.cnblogs.com/hustzzl/p/9343797.html 1. Java锁的种类 在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁.读写锁等等,非常繁多, ...

  5. [组件封装]微信小程序-底部弹框

    描述 模仿ios浏览器底部弹框效果. 遮罩层淡入淡出,弹框高度根据内容自适应. 效果 源码 popup-bottom.wxml <!-- popup-bottom.wxml --> < ...

  6. 是时候了解Java Socket底层实现了

    在Java中,提供了一系列Socket API,可以轻松建立两个主机之间的连接.读取数据,那底层到底怎么实现,很少人去关心.这其实最终还是通过调用操作系统提供得Socket接口完成(TCP/IP是由操 ...

  7. 【转】linux中ifconfig 命令详解详解

    1 概述 ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电 ...

  8. 手机抓包HTTPS (Fiddler & Packet Capture)

    手机抓包HTTPS (Fiddler & Packet Capture) 以前写了一个小游戏(消灭病毒)的刷金币小脚本,使用需要获取openid ,就需要抓微信的HTTPS包 一直都是用Fid ...

  9. POJ1780 欧拉路+手写栈解决爆战问题

    题目链接:http://poj.org/problem?id=1780 本题中给出一个位数n,要求给出一个10^n+n-1位数的数,要求每个n位的数都要在里面出现,一个n位的数一共有10^n种,我们容 ...

  10. [BFS,A*,k短路径] 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 path (Problem - 6705)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6705 path Time Limit: 2000/2000 MS (Java/Others)    Mem ...