十分钟掌握Pandas(上)——来自官网API
十分钟掌握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的更多相关文章
- 十分钟了解pandas
十分钟掌握Pandas(上)--来自官网API 一.numpy和pandas numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍. pandas 是基于NumPy ...
- 十分钟掌握pandas(pandas官方文档翻译)
十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: impo ...
- 【朝花夕拾】Android性能篇之(八)来自官网的自白
前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/10823372.html],谢谢! Android性能优化无疑是Android中的一个重点,也是 ...
- 比特魔方原创,用十分钟在Cocos-BCX上发行了自己的NFT
比特魔方原创 作者 | 第二个区块 出品 |比特魔方 NFT正在积累越来越多的共识.每看到人们讨论NFT,我隐约就能联想到2019年人们谈论DeFi的时候.隐约让我感到欠缺的是,相对2019年的DeF ...
- (转)十分钟入门pandas
本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook . 习 ...
- 做个伪IE浏览器?!【来自官网】
原文:docwiki.embarcadero.com/RADStudio/Seattle/en/Building_a_VCL_Forms_Web_Browser_Application 选择File ...
- 【转载】koa相关知识(来自官网)
什么是Koa? koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重 ...
- Vertx上传 官网Demo Java版
package io.vertx.example.web.upload; import io.vertx.core.AbstractVerticle; import io.vertx.example. ...
- Content Providers的步骤,来自官网文档
Content Providers In this document Content provider basics Querying a content provider Modifying dat ...
随机推荐
- c#写windows服务 小demo
前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总结下, ...
- shell脚本双引号、大括号、if语句注意事项
1.双引号的问题 变量用双引号括起来的意义 如果变量不用双引号括起来,比如echo $a,那么隐含的意义就是,把$a变量的字符串,按照空格.制表符.换行符等符号来分割开.然后把这些分割后的每一项再按 ...
- 04点睛Spring MVC 4.1-拦截器
转发地址:https://www.iteye.com/blog/wiselyman-2214292 4.1 拦截器 拦截器实现了对每一个请求处理之前和之后进行相关的处理,类似于Servlet的filt ...
- 路由(Routing)
路由(Routing) ASP.NET Core MVC 路由是建立在ASP.NET Core 路由的,一项强大的URL映射组件,它可以构建具有理解和搜索网址的应用程序.这使得我们可以自定义应用程序 ...
- 第07组 Alpha冲刺(1/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:完成人员分配,初步学习Android开发 Github签入记录 接下来的计划:继续完成Android开发的学习,带领团队进行前后端开 ...
- 【Luogu P3919】可持久化数组
数组是一种单点修改,单点查询的基础数据结构. 如果要对数组改进,使之可持久化,那么显然我们需要利用其它的数据结构来改进它. 对于单点修改和单点查询两种操作,很容易发现可持久化线段树也是支持这种操作的. ...
- [转载]SQL Server提权系列
本文原文地址:https://www.cnblogs.com/wintrysec/p/10875232.html 一.利用xp_cmdshell提权 xp_cmdshell默认是关闭的,可以通过下面的 ...
- HDU 1016Presentation Error
这是一道典型的DFS题目.幻想有n个箱子,每次都向箱子里扔一个数,(当然第一个是必定是1,因为题目要求按字典序输出).判断输出的条件就是,当我移动到第n+1个箱子的时候,就要return了,当然还要判 ...
- python实战项目 — 爬取中国票房网年度电影信息并保存在csv
import pandas as pd import requests from bs4 import BeautifulSoup import time def spider(url, header ...
- CH02基于ZYNQ的嵌入式LINUX移植
CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...