十分钟掌握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 ...
随机推荐
- Union All/Union/Intersect操作
Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1. ...
- linux如何查看mysql是否启动
linux下有很多服务,今天就写一下如何查看服务是否启动,以mysql为例子 使用命令 # service mysqld status 或者 # service mysql status 命令来查看m ...
- web端自动化——自动化测试准备工作
准备工作# 在开始自己项目的自动化测试之前,我们最好已经完成了下面的准备工作: 1.熟悉待测系统 对项目的待测系统整体功能和业务逻辑有比较清晰的认识. 2.编写系统的自动化测试用例大纲和自动化测试用例 ...
- 【转】mysql 存储过程的示例
原文地址:https://blog.csdn.net/lishaojun0115/article/details/50183661 begin #定义变量 declare local_sender v ...
- formSelects隐藏功能键
隐藏后 方法: // selectId就是select的id,这是在select渲染完后执行 $("#selectId").parent().find(".xm-sele ...
- STM32 MDK摘记
题记:这人是越懒越懒,记性也也来越差,前段时间改了个链接文件,今天想用,竟然忘了咋写....还是勤记记吧... 随时更新,笔记帖. 不喜勿喷! 1,关于MDK链接文件宏的定义 #! armcc -E ...
- Google大数据三大论文
简介:https://blog.csdn.net/w1573007/article/details/52966742 论文中英文版下载http://pan.baidu.com/s/1slUy4sl ...
- [PDF] - 获取 RadioButtonList 控件值的方法
背景 目标是通过 iTextSharp 读取 PDF 模板,填充内容后以生成新 PDF 文件.利用 福昕PDF编辑器个人版 可以获取到 RadioButtonList 的组名,但是获取不到每一个 Ra ...
- eclipse设置text file encoding UTF-8和文件的换行符 Unix 格式
阿里华山版java开发手册代码格式第10条: 步骤:1.Window - Preferences, 2.左边选择 General - Workspace , 3.右边Text file encodin ...
- 在做爬虫或者自动化测试时新打开一个新标签页,必须使用windows切换
在做爬虫或者自动化测试时,有时会打开一个新的标签页或者新的窗口,直接使用xpath定位元素会发现找不到元素,在firefox中定位了元素还是找不到, 经过多次发现,在眼睛视野内看到这个窗口是在最前面, ...