Pandas 是基于 NumPy 的一种数据处理工具,该工具为了解决数据分析任务而创建。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的函数和方法.。

Pandas 的数据结构:Pandas 主要有 Series(一维数组),DataFrame(二维数组),Panel(三维数组),Panel4D(四维数组),PanelND(更多维数组)等数据结构。其中 Series 和 DataFrame 应用的最为广泛。

  • Series 是一维带标签的数组,它可以包含任何数据类型。包括整数,字符串,浮点数,Python 对象等。Series 可以通过标签来定位。
  • DataFrame 是二维的带标签的数据结构。我们可以通过标签来定位数据。这是 NumPy 所没有的。

导入 Pandas 模块

练习Pandas 之前 ,首先需要导入 Pandas model , 并约定为 pd

import pandas as pd 

创建 Series 数据类型

Pandas 中,Series 可以被看作由 1 列数据组成的数据集。

创建 Series 语法:s = pd.Series(data, index=index),可以通过多种方式进行创建,以下介绍了 3 个常用方法。

3. 从列表创建 Series 

arr = [0,1,2,3,4]
s1 = pd.Series(arr)
s1
0    0
1    1
2    2
3    3
4    4
dtype: int64

4. 从 Ndarray 创建 Series

import numpy as np
n = np.random.randn(5)
index = ['a','b','c','d','e']
s2 = pd.Series(n,index)
s2
a    1.454342
b   -0.262966
c    1.923254
d    0.761142
e   -0.086887
dtype: float64

5. 从字典创建 Series

d = {'a':1 ,'b':2,'c':3,'d':4,'e':5}
s3 = pd.Series(d)
s3
a    1
b    2
c    3
d    4
e    5
dtype: int64

Series 基本操作

6. 修改 Series 索引

print(s1)
s1.index = ['A','B','C','D','E']
s1
0    0
1    1
2    2
3    3
4    4
dtype: int64

Out[8]:

A    0
B    1
C    2
D    3
E    4
dtype: int64

7. Series 纵向拼接

s4 = s3.append(s1)
s4
a    1
b    2
c    3
d    4
e    5
A    0
B    1
C    2
D    3
E    4
dtype: int64

8. Series 按指定索引删除元素

print(s4)
s4 = s4.drop('e')  # 删除索引为 e 的值
s4

9. Series 修改指定索引元素

s4['A'] = 6  # 修改索引为 A 的值 = 6
s4

10. Series 按指定索引查找元素

s4['B'] 

11. Series 切片操作

例如对s4的前 3 个数据访问

s4[:3]
a    1
b    2
c    3
dtype: int64

Series 运算

12. Series 加法运算

Series 的加法运算是按照索引计算,如果索引不同则填充为 NaN(空值)。

s4.add(s3)
A    NaN
B    NaN
C    NaN
D    NaN
E    NaN
a    2.0
b    4.0
c    6.0
d    8.0
e    NaN
dtype: float64

13. Series 减法运算

Series的减法运算是按照索引对应计算,如果不同则填充为 NaN(空值)。

s4.sub(s3)

14. Series 乘法运算

s4.mul(s3)

15. Series 除法运算

s4.div(s3)

16. Series 求中位数

s4.median()

17. Series 求和

s4.sum()

18. Series 求最大值

s4.max()

19. Series 求最小值

s4.min()

创建 DataFrame 数据类型

与 Sereis 不同,DataFrame 可以存在多列数据。一般情况下,DataFrame 也更加常用。

20. 通过 NumPy 数组创建 DataFrame

dates = pd.date_range('today', periods=6)  # 定义时间序列作为 index
num_arr = np.random.randn(6, 4)  # 传入 numpy 随机数组
columns = ['A', 'B', 'C', 'D']  # 将列表作为列名
df1 = pd.DataFrame(num_arr, index=dates, columns=columns)
df1

21. 通过字典数组创建 DataFrame

data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df2 = pd.DataFrame(data, index=labels)
df2

22. 查看 DataFrame 的数据类型

df2.dtypes

DataFrame 基本操作

23. 预览 DataFrame 的前 5 行数据

此方法对快速了解陌生数据集结构十分有用。

df2.head()  # 默认为显示 5 行,可根据需要在括号中填入希望预览的行数

24. 查看 DataFrame 的后 3 行数据

df2.tail(3)

25.查看 DataFrame 的索引

df2.index

26. 查看 DataFrame 的列名

df2.columns

27. 查看 DataFrame 的数值

df2.values

28. 查看 DataFrame 的统计数据

df2.describe()

29. DataFrame 转置操作

df2.T

30. 对 DataFrame 进行按列排序

df2.sort_values(by='age')  # 按 age 升序排列

31. 对 DataFrame 数据切片

df2[1:3]

32. 对 DataFrame 通过标签查询(单列)

df2['age']

33. 对 DataFrame 通过标签查询(多列)

df2[['age', 'animal']]  # 传入一个列名组成的列表

34. 对 DataFrame 通过位置查询

df2.iloc[1:3]  # 查询 2,3 行

35. DataFrame 副本拷贝

# 生成 DataFrame 副本,方便数据集被多个不同流程使用
df3 = df2.copy()
df3

36. 判断 DataFrame 元素是否为空

df3.isnull()  # 如果为空则返回为 True

37. 添加列数据

num = pd.Series([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], index=df3.index)df3['No.'] = num  # 添加以 'No.' 为列名的新数据列
df3

38. 根据 DataFrame 的下标值进行更改

# 修改第 2 行与第 1 列对应的值 3.0 → 2.0
df3.iat[1, 0] = 2  # 索引序号从 0 开始,这里为 1, 0
df3

39. 根据 DataFrame 的标签对数据进行修改

df3.loc['f','age'] = 0.5
df3 
  animal age visits priority No.
a cat 2.5 1 yes 0
b cat 3.0 3 yes 1
c snake 0.5 2 no 2
d dog NaN 3 yes 3
e dog 5.0 2 no 4
f cat 0.5 3 no 5
g snake 4.5 1 no 6
h cat NaN 1 yes 7
i dog 7.0 2 no 8
j dog 3.0 1 no 9

40. DataFrame 求平均值操作

df3.mean()

41. 对 DataFrame 中任意列做求和操作

df3['visits'].sum()

字符串操作

42. 将字符串转化为小写字母

string = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca',np.nan, 'CABA', 'dog', 'cat'])
print(string)
string.str.lower()

43. 将字符串转化为大写字母

string.str.upper()

DataFrame 缺失值操作

44. 对缺失值进行填充

df4 = df3.copy()

df4 = df3.copy()
print(df4)
df4.fillna(value=3)
 animal  age  visits priority  No.
a    cat  2.5       1      yes    0
b    cat  3.0       3      yes    1
c  snake  0.5       2       no    2
d    dog  NaN       3      yes    3
e    dog  5.0       2       no    4
f    cat  0.5       3       no    5
g  snake  4.5       1       no    6
h    cat  NaN       1      yes    7
i    dog  7.0       2       no    8
j    dog  3.0       1       no    9
 animal  age  visits priority  No.
a    cat  2.5       1      yes    0
b    cat  3.0       3      yes    1
c  snake  0.5       2       no    2
d    dog  3       3      yes    3
e    dog  5.0       2       no    4
f    cat  0.5       3       no    5
g  snake  4.5       1       no    6
h    cat  3      1      yes    7
i    dog  7.0       2       no    8
j    dog  3.0       1       no    9

45. 删除存在缺失值的行

df5 = df3.copy()
print(df5)
df5.dropna(how='any')  # 任何存在 NaN 的行都将被删除

46. DataFrame 按指定列对齐

left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]})
right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]})print(left)
print(right)# 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
pd.merge(left, right, on='key')

46. DataFrame 按指定列对齐

left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]})
right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]})print(left)
print(right)# 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
pd.merge(left, right, on='key')
    key  one
0  foo1    1
1  foo2    2key  two
0  foo2    4
1  foo3    5
  key one two
0 foo2 2 4

这个就像 sql 里面的表的连接一样

DataFrame 文件操作

47. CSV 文件写入

df3.to_csv('animal.csv')
print("写入成功.")

48. CSV 文件读取

df_animal = pd.read_csv('animal.csv')
df_animal

49. Excel 写入操作

df3.to_excel('animal.xlsx', sheet_name='Sheet1')
print("写入成功.")

50. Excel 读取操作

pd.read_excel('animal.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

Panda 用法( 基础 )相关推荐

  1. Elasticsearch专栏-3.es基本用法-基础api

    es基本用法-基础api 索引index增删改查 增 删 改 查 文档doc增删改查 增 方式1:PUT 方式2:POST 删 改 方式1:_doc 方式2:_update 查 批量操作bulk 同一 ...

  2. python panda用法_Python Pandas用法入门

    简介 首先pandas是基于numpy进行开发的. Pandas 的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融.统计.社会科学.工程等领域里 ...

  3. python panda用法_Python3 pandas用法大全

    Python3 pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: importnumpy as npimport pandas as p ...

  4. Java-GUI编程实战之管理系统 Day2【Swing(组件介绍、布局管理器、事件类及监听器类)、基础组件按钮和输入框的用法】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  5. try/catch的用法

    参考原文:https://www.cnblogs.com/freshmen/p/4424667.html 1.try/catch用法基础介绍 try{//程序中抛出异常throw value;}cat ...

  6. 【Python基础】Python 流程控制专题总结

    今天流程控制专题 流程控制与代码的执行顺序息息相关,流程控制相关的关键字,如if,elif,for,while,break,continue,else,return,yield,pass等. 本专题详 ...

  7. oracle within的用法,Oracle的 listagg() WITHIN GROUP ()函数使用

    1.使用条件查询  查询部门为20的员工列表 -- 查询部门为20的员工列表 SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = '20 ...

  8. OpenGL基础10:变换

    必须掌握的前置技能:https://blog.csdn.net/Jaihk662/article/details/103811465(向量与矩阵) 其实也不难,也就是一些线性代数的基本知识,暂时只需要 ...

  9. java 正则 惰性匹配_js正则表达式惰性匹配和贪婪匹配用法分析

    本文实例讲述了js正则表达式惰性匹配和贪婪匹配用法.分享给大家供大家参考,具体如下: 在讲贪婪模式和惰性模式之前,先回顾一下JS正则基础: 写法基础: ①不需要双引号,直接用//包含 => /w ...

最新文章

  1. MYSQL 部分事务
  2. python猜数游戏在程序中预设一个_一道Python简单程序结构练习题
  3. xib中Autolayout的使用
  4. 公网对讲机修改对讲机程序_更少的对讲机,对讲机-更多专心,专心
  5. ffmpeg - AVPacket内存问题分析(AVFrame一样的)
  6. 批量造数据的一种方法
  7. 基于jQuery鼠标点击弹出登陆框效果
  8. 富士相机设置传原图_「富士相机」机身设置分享,摄影小白也可以拍摄到胶片感的照片...
  9. WinForm列表控件美化
  10. Ziipoo(易谱)简谱编辑制作打谱软件免费版下载 WiN+MAC+安卓+Linux
  11. SQL中日期转换函数
  12. 关于身份证校验算法的一些想法
  13. React 预览图片 视频 音频_HDMI录制盒斗鱼虎牙高清视频游戏直播器1080监控switch/ps4采集卡...
  14. Ubuntu 18.04 安装驱动
  15. IPVS使用的Netfilter Hook点
  16. 思维导图工具Thebrain:动态思维导图简介
  17. rhel系统启动过程_技术|Linux 开机引导和启动过程详解
  18. 微信公众号企业认证/企业公众号微信认证
  19. ins 登录发现未知网络_如何发现未知的知识
  20. golang 使用negroni,实现server

热门文章

  1. 视频流RTSP转RTMP与RTSP转M3U8实战
  2. Bootstrap的基本使用方法,5分钟帮你搞懂怎么用
  3. 跳槽时,这些Java面试题必须会,99%会被问到!
  4. 关键词短语生成的无监督方法01——综述
  5. SQL Server DBCC
  6. SQL语句注入的全过程
  7. 对Java.io中一些类的归纳,层次结构图
  8. LruCache的终极解析
  9. 【Vmware】 CentOS 8 安装教程
  10. 中国电信北京研究院 孙琼:中国电信的SDN应用与实践初探