首先第一部还是导入 Pandas 与 NumPy ,并且要生成一个 DataFrame ,这里小编就简单的使用随机数的形式进行生成,代码如下:

import numpy as np
import pandas as pd dates = pd.date_range('', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) print(df)

这里最后我们打印了一下这个生成的 DataFrame ,结果如下:

                   A         B         C         D
2020-01-01 0.177499 -0.025693 0.182894 -1.123577
2020-01-02 1.067580 1.592576 -0.010205 -0.349342
2020-01-03 1.141218 1.032333 1.364477 0.851630
2020-01-04 0.920260 -0.243247 0.196369 -0.835655
2020-01-05 -0.729184 -0.235706 1.144007 -1.048619
2020-01-06 -0.480888 -0.995325 -0.283726 0.428644

1.head()

# 查看头部数据
print(df.head(1))
                   A         B         C         D
2020-01-01 0.177499 -0.025693 0.182894 -1.123577

2.tail()

# 查看尾部数据
print(df.tail(2))
                   A         B         C         D
2020-01-05 -0.729184 -0.235706 1.144007 -1.048619
2020-01-06 -0.480888 -0.995325 -0.283726 0.428644

3.index

# 获取索引
print(df.index)
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
'2020-01-05', '2020-01-06'],
dtype='datetime64[ns]', freq='D')

4.columns

# 获取列名
print(df.columns)
Index(['A', 'B', 'C', 'D'], dtype='object')

5.describe()

# 查看数据的统计摘要
print(df.describe())
              A         B         C         D
count 6.000000 6.000000 6.000000 6.000000
mean 0.349414 0.187490 0.432303 -0.346153
std 0.818647 0.948383 0.663604 0.821275
min -0.729184 -0.995325 -0.283726 -1.123577
25% -0.316291 -0.241362 0.038070 -0.995378
50% 0.548879 -0.130700 0.189632 -0.592498
75% 1.030750 0.767826 0.907098 0.234148
max 1.141218 1.592576 1.364477 0.851630

Pandas 还为我们提供了一个神奇的功能,「转置数据」,就是把行列互换,示例如下:

# 转置数据
print(df.T)
  2020-01-01  2020-01-02  2020-01-03  2020-01-04  2020-01-05  2020-01-06
A 0.177499 1.067580 1.141218 0.920260 -0.729184 -0.480888
B -0.025693 1.592576 1.032333 -0.243247 -0.235706 -0.995325
C 0.182894 -0.010205 1.364477 0.196369 1.144007 -0.283726
D -1.123577 -0.349342 0.851630 -0.835655 -1.048619 0.428644

6.sort_index()

用途:默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。

注意:df.sort_index() 可以完成和 df.sort_values() 完全相同的功能,但 python 更推荐用只用 df.sort_index() 对 index 和 columns 排序,其他排序方式用 df.sort_values() 。

语法:DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)

  • axis:0 按照行名排序;1 按照列名排序。
  • level:默认 None ,否则按照给定的 level 顺序排列。
  • ascending:默认 True 升序排列; False 降序排列。
  • inplace:默认False,否则排序之后的数据直接替换原来的数据框。
  • kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
  • na_position:缺失值默认排在最后{"first","last"}。
  • by:按照某一列或几列数据进行排序,但是by参数貌似不建议使用。
# 默认按「行标签」升序排列
print(df1.sort_index())
  b  a  c
0 2 3 3
1 3 2 8
2 1 4 1
3 2 1 2
# 按「列标签」升序排列
print(df1.sort_index(axis=1))
   a  b  c
2 4 1 1
0 3 2 3
1 2 3 8
3 1 2 2

7.sort_values()

用途:既可以根据列数据,也可根据行数据排序。

注意:必须指定by参数,即必须指定哪几行或哪几列;无法根据 index 和 columns 排序(由 sort_index() 执行)

语法:DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

  • axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
  • by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名"。
  • ascending:布尔型,True则升序,如果by=['列名1','列名2'],则该参数可以是[True, False],即第一字段升序,第二个降序。
  • inplace:布尔型,是否用排序后的数据框替换现有的数据框。
  • kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
  • na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。
# 按 b 列升序排序
print(df1.sort_values(by='b'))
   b  a  c
2 1 4 1
0 2 3 3
3 2 1 2
1 3 2 8
# 先按 b 列降序,再按 a 列升序排序
print(df1.sort_values(by=['b','a'],axis=0,ascending=[False,True]))
  b  a  c
1 3 2 8
3 2 1 2
0 2 3 3
2 1 4 1

 

8.添加、删除

创建好了 DataFrame 以后,我们自然是希望可以动态的操作它,那么标准的 CRUD 操作必不可少。

获取数据示例如下,这里我们使用 df4 做演示:

d1 = {'one': [1., 2., 3., 4.],
'two': [4., 3., 2., 1.]} df4 = pd.DataFrame(d1, index=['a', 'b', 'c', 'd'])
print(df4)
# 删除数据
del df4['two']
df4.pop('three')
print(df4)
   one   flag
a 1.0 False
b 2.0 False
c 3.0 True
d 4.0 True
# 插入数据
df4['foo'] = 'bar'
print(df4)
   one   flag  foo
a 1.0 False bar
b 2.0 False bar
c 3.0 True bar
d 4.0 True bar

插入与 DataFrame 索引不同的 Series 时,以 DataFrame 的索引为准:

df4['one_trunc'] = df4['one'][:2]
print(df4)

结果如下:

  one   flag  foo  one_trunc
a 1.0 False bar 1.0
b 2.0 False bar 2.0
c 3.0 True bar NaN
d 4.0 True bar NaN

数据可视化基础专题(七):Pandas基础(六) 数据增删改以及相关操作的更多相关文章

  1. 【基础篇】js对本地文件增删改查--查

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  2. 【基础篇】js对本地文件增删改查--改

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  3. 【基础篇】js对本地文件增删改查--删

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  4. 【基础篇】js对本地文件增删改查--增

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  5. 【基础篇】js对本地文件增删改查

    [基础篇] js对本地文件增删改查--增 js对本地文件增删改查--删 js对本地文件增删改查--改 js对本地文件增删改查--查

  6. 【python基础】利用pandas处理Excel数据

    参考:https://www.cnblogs.com/liulinghua90/p/9935642.html 一.安装第三方库xlrd和pandas 1:pandas依赖处理Excel的xlrd模块, ...

  7. Mysq基础l数据库管理、表管理、增删改数据整理

    一.       数据库管理: 创建数据库: create database(自定义) 查询所有数据库: show databases;(查询所有数据库) show create database ( ...

  8. 手把手教你轻松使用数据可视化BI软件创建某疾病监控数据大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件.   本文以某疾病监控数据大屏为例为 ...

  9. 详解如何快速使用数据可视化BI软件创建医疗运营监控数据中心大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件.   本文以医疗运营监控数据中心大屏 ...

随机推荐

  1. electron-vue报错:Webpack ReferenceError: process is not defined

    electron-vue报错:Webpack ReferenceError: process is not defined 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总 ...

  2. VScode快捷键集锦(持续更新)

    本文的快捷键是根据VScode for mac来的,Windows和Linux用户可能需要些许改动. 注释:cmd + /  注释当前选中的行,或者注释掉选中的行,再按一次反注释.还可以在按cmd + ...

  3. Python中用OpenPyXL处理Excel表格 - 单元格格式设置

    官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义 ...

  4. InnoDB 中 B+ 树索引的分裂

    数据库中B+树索引的分裂并不总是从页的中间记录开始,这样可能会导致空间的浪费,例如下面的记录: 1, 2, 3, 4, 5, 6, 7, 8, 9 插入式根据自增顺序进行的,若这时插入10这条记录后需 ...

  5. 解决React Native安装应用到真机(红米3S)报Execution failed for task ':app:installDebug'的错误

    报错信息如下: :app:installDebug Installing APK 'app-debug.apk' on 'Redmi 3S - 6.0.1'Unable to install D:\R ...

  6. easymock笔记2

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest. EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final ...

  7. Springboot 集成 ElasticSearch 踩坑

    这里只涉及到基础使用 导包 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  8. 洛谷 CF1012C Hills (动态规划)

    题目大意:有n个山丘 , 可以在山丘上建房子 , 建房子的要求是 : 该山丘的左右山丘严格的矮于该山丘 (如果有的话),你有一架挖掘机,每单位时间可以给一个山丘挖一个单位的高度,问你想要建造 1,2, ...

  9. List<List<Object>> list = new ArrayList<List<Object>>(); 求回答补充问题 list.get(position).add(Object);为什么会报错啊我想在对应的list里面添加对象

    public static void main(String[] args){ List<List<Object>> list = new ArrayList<List& ...

  10. CentOS 关闭暂不需要的系统服务

    需要保留的服务:crond.iptables.irqbalance.microcode_ctl.network.random.sshd.syslog.local 一 .使用命令:ntsysv 打开选项 ...