十分钟掌握Pandas(上)——来自官网API

其实不止10分钟,这么多,至少一天

一、numpy和pandas

numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍。

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

二、数据类型

numpy pandas
ndArray相当于n维矩阵 Series(类似一维数组,或者kv值对)
在numpy中只有ndArray一种,但是ndArray有很多种数据类型 DataFrame(使用csv读入数据是dataFrame)

二、官网API

1.API之前,我们应该学习数据导入

pandas可以导入csv数据集

import pandas as pd

food_info = pd.read_csv("xxx.csv")
print(type(food_info))
print(food_info)
2.pd.Series 获取一个Series类型
import numpy as np
import pandas as pd
# 我们可以发现,这边可以使用numpy,证明pandas是基于numpy构建的
s = pd.Series([1,3,5,np.nan,6,8])
print(s)
打印
0   1.0
1   3.0
2   5.0
3   NaN
4   6.0
5   8.0
dtype: float64
3.获取日期

从第一个date开始,获取6个连续日期

dates = pd.date_range('20130101',periods=6)
dates
打印
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
              '2013-01-05', '2013-01-06'],
            dtype='datetime64[ns]', freq='D')
4.第一次使用dataframe类型

np.random.randn(6,4) 获取6行4列数据集

index是列

columns是行

df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
df
打印结果
A B C D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
5.查看数据类型
df2.dtypes
A           float64
B   datetime64[ns]
C           float32
D             int32
E         category
F           object
dtype: object
6.查看前两行
df.head(2)
A   B   C   D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
7.查看尾三行
df.tail(3)
A   B   C   D
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
8.查看索引(行名)
df.index
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
              '2013-01-05', '2013-01-06'],
            dtype='datetime64[ns]', freq='D')
9.查看列名
df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
10.转化为numpy类型的数组
df.to_numpy()
array([[ 0.28468077,  1.8813276 ,  0.31042514, -2.52732926],
      [-0.20972286, -1.41018638, 0.86533622, 0.89325968],
      [-0.09557804, 0.57628249, -1.34705203, -0.05537029],
      [-1.21652719, 0.42374501, -1.11066844, -1.6824053 ],
      [ 0.27550116, -0.84445705, -0.95463056, 2.31257796],
      [-1.38455249, 1.53925476, -1.49907627, -0.91612064]])
11.查看描述
df.describe()
A   B   C   D
count 6.000000 6.000000 6.000000 6.000000
mean -0.391033 0.360994 -0.622611 -0.329231
std 0.733423 1.291526 0.972213 1.763848
min -1.384552 -1.410186 -1.499076 -2.527329
25% -0.964826 -0.527407 -1.287956 -1.490834
50% -0.152650 0.500014 -1.032650 -0.485745
75% 0.182731 1.298512 -0.005839 0.656102
max 0.284681 1.881328 0.865336 2.312578

依次为:总数、均值、标准差、最小值、25%的值、50%的值、75%的值、最大值

12.转置矩阵
df.T
    2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
A 0.284681 -0.209723 -0.095578 -1.216527 0.275501 -1.384552
B 1.881328 -1.410186 0.576282 0.423745 -0.844457 1.539255
C 0.310425 0.865336 -1.347052 -1.110668 -0.954631 -1.499076
D -2.527329 0.893260 -0.055370 -1.682405 2.312578 -0.916121
13.索引排序,按照维度为一(即横坐标),排序,升序为false
df.sort_index(axis=1,ascending=False)

D C B A
2013-01-01 -2.527329 0.310425 1.881328 0.284681
2013-01-02 0.893260 0.865336 -1.410186 -0.209723
2013-01-03 -0.055370 -1.347052 0.576282 -0.095578
2013-01-04 -1.682405 -1.110668 0.423745 -1.216527
2013-01-05 2.312578 -0.954631 -0.844457 0.275501
2013-01-06 -0.916121 -1.499076 1.539255 -1.384552
14.按照B进行横向排序
df.sort_values(by='B')
A   B   C   D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
2013-01-01 0.284681 1.881328 0.310425 -2.527329
15.获取列标为'A'的
df['A']
2013-01-01    0.284681
2013-01-02   -0.209723
2013-01-03   -0.095578
2013-01-04   -1.216527
2013-01-05   0.275501
2013-01-06   -1.384552
Freq: D, Name: A, dtype: float64
16.获取横标切片
df[0:3]
A   B   C   D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
17.获取横标切片(value)
df['20130102':'20130104']
A   B   C   D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
18.获取第一行
df.loc[dates[0]]
A    0.284681
B   1.881328
C   0.310425
D   -2.527329
Name: 2013-01-01 00:00:00, dtype: float64
19.获取行切片
df.loc[:,['A','B']]
A   B
2013-01-01 0.284681 1.881328
2013-01-02 -0.209723 -1.410186
2013-01-03 -0.095578 0.576282
2013-01-04 -1.216527 0.423745
2013-01-05 0.275501 -0.844457
2013-01-06 -1.384552 1.539255
df.loc['20130102':'20130104',['A','B']]
df.loc['20130102',['A','B']]
20.获取唯一元素
df.loc[dates[0],'A']//这是唯一元素
df.at[dates[0],'A']//与上面一样,官网这样解释For getting fast access to a scalar,更快的访问维度数据
21.通过索引获取第一行(之前的loc是通过值获取行)
df.iloc[3]
A    1.191786
B   -1.384943
C   -1.463160
D   0.527332
Name: 2013-01-04 00:00:00, dtype: float64
22.索引获取切片
df.iloc[3:5,0:2]
df.iloc[[1,2,4],[0,2]]
df.iloc[1:3,:]
df.iloc[1,1]
df.iat[1,1]
df[df.A>0]
23.拷贝赋值
df2 = df.copy()
df2['E'] = ['one','two','three','four','five','six']
df2

结果多一列E

24.进行判断是否贼取值
df2[df2['E'].isin(['two','four'])]
输出:
A B C D E
2013-01-02 0.847134 -0.003377 0.353925 0.438065 two
2013-01-04 1.191786 -1.384943 -1.463160 0.527332 four
25.进行按照日期取6个序列
s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130102',periods=6))
s1
26.进行取赋值
df['F']=s1
df
A   B   C   D   F
2013-01-01 0.284681 1.881328 0.310425 -2.527329 NaN
2013-01-02 -0.209723 -1.410186 0.865336 0.893260 1.0
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370 2.0
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405 3.0
2013-01-05 0.275501 -0.844457 -0.954631 2.312578 4.0
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121 5.0

十分钟掌握Pandas(上)——来自官网API的更多相关文章

  1. 十分钟了解pandas

    十分钟掌握Pandas(上)--来自官网API 一.numpy和pandas numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍. pandas 是基于NumPy ...

  2. 十分钟掌握pandas(pandas官方文档翻译)

    十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: impo ...

  3. 【朝花夕拾】Android性能篇之(八)来自官网的自白

    前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/10823372.html],谢谢! Android性能优化无疑是Android中的一个重点,也是 ...

  4. 比特魔方原创,用十分钟在Cocos-BCX上发行了自己的NFT

    比特魔方原创 作者 | 第二个区块 出品 |比特魔方 NFT正在积累越来越多的共识.每看到人们讨论NFT,我隐约就能联想到2019年人们谈论DeFi的时候.隐约让我感到欠缺的是,相对2019年的DeF ...

  5. (转)十分钟入门pandas

    本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook . 习 ...

  6. 做个伪IE浏览器?!【来自官网】

    原文:docwiki.embarcadero.com/RADStudio/Seattle/en/Building_a_VCL_Forms_Web_Browser_Application 选择File ...

  7. 【转载】koa相关知识(来自官网)

    什么是Koa? koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重 ...

  8. Vertx上传 官网Demo Java版

    package io.vertx.example.web.upload; import io.vertx.core.AbstractVerticle; import io.vertx.example. ...

  9. Content Providers的步骤,来自官网文档

    Content Providers In this document Content provider basics Querying a content provider Modifying dat ...

随机推荐

  1. 【Leetcode_easy】914. X of a Kind in a Deck of Cards

    problem 914. X of a Kind in a Deck of Cards 题意:每个数字对应的数目可以均分为多组含有K个相同数目该数字的数组. 思路:使用 map 结构记录数组中每个元素 ...

  2. Configuration system failed to initialize

    引用:https://cloud.tencent.com/developer/article/1336954 重装.net Framework

  3. NLP | 算法 学习资料整理

    UPDATE TIME: 2019-12-12 17:06:32 NLP: 对话系统: [ ] https://www.cnblogs.com/jiangxinyang/p/10789512.html ...

  4. Linux 脚本语言入门

    0.脚本编写初步介绍 (1)脚本第一行以 #!/bin/sh 开始,也可以用 #!/bin/bash 开始,但是第一行必须以这种方式开始. (2)脚本名需要以.sh结尾 (3)#开头的句子表示注释 ( ...

  5. LeetCode 94. 二叉树的中序遍历(Binary Tree Inorder Traversal)

    94. 二叉树的中序遍历 94. Binary Tree Inorder Traversal 题目描述 给定一个二叉树,返回它的 中序 遍历. LeetCode94. Binary Tree Inor ...

  6. Amazon SQS 消息队列服务

    Amazon sqs是亚马逊提供的线上消息队列服务, 可以实现应用程序解耦,以及可靠性保证. sqs提供了两种消息队列, 一种是标准消息队列, 一种是先进先出队列(FIFO), 其区别是FIFO是严格 ...

  7. [转帖]14-使用glusterfs做持久化存储

    14-使用glusterfs做持久化存储 https://www.cnblogs.com/guigujun/p/8366558.html 使用glusterfs做持久化存储 我们复用kubernete ...

  8. Python 容器用法整理

    本文整理几种基本容器:列表.元组.字典和集合的用法和collections中几种已经预先实现的容器数据结构:namedtuple(),双向链表deque,ChainMap,Counter,Ordere ...

  9. visual studio code编辑python文件

    visual studio code 安装.通过360软件管家,查找visual studio code 下载安装即可 设置visual studio code为中文 打开进入软件,Ctrl + Sh ...

  10. pod宿主机挂载pv存储过程

    1处的控制循环Control Loop应该是:VolumeManagerReconciler ----------------------------------------------------- ...