30分钟完成pandas入门
pandas是基于numpy的一种数据分析工具,熟练使用pandas可以大大降低我们的工作量
引入pandas包:
import numpy as np
import pandas as pd
pandas数据类型
pandas有两种数据类型:series和dataframe。
series是一种一维数据结构,每一个元素都有一个索引,与一维数组类似。索引可以使数字或者字符串,series结构如下:
dataframe则是二维数据结构,其存在于excel表格类似,有对应的行和列,其结构如下:
Series对象的创建
例1
#我们可以直接用Series函数来创建对象
import numpy as np
import pandas as pd
a=pd.Series([1,2,3,4,5])
print(a)
'''
输出为:
0 1
1 2
2 3
3 4
4 5
dtype: int64
#程序会自动生成index,从0开始编号
'''
例2
#当然也可以指定index,并且Series可以使用已有的列表、元素来创建对象,也可以利用ndarray来创建
import numpy as np
import pandas as pd
a=np.array([1,2,3,4,5,6])
b=pd.Series(a,index=['a','b','c','d','e','f'])
print(b)
'''
输出为:
a 1
b 2
c 3
d 4
e 5
f 6
dtype: int32
'''
例3
#Series也可以用来创建时间序列,但是必须指定start,end,period中最少两个值
import numpy as np
import pandas as pd
b=pd.date_range('20200101','20200106')
print(b)
'''
输出为:
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04','2020-01-05', '2020-01-06'],dtype='datetime64[ns]', freq='D')
'''
DataFrame对象的创建
DataFrame有行名和列名,行列名我们都可以进行定义我个人理解的构造函数如下
pd.DataFrame(object,index=,columns=)
例1
import numpy as np
import pandas as pd
s=np.arange(1,7)
s=s.reshape(2,3)
a=pd.DataFrame(s,index=['a','b'],columns=['A','B','C'])
print(a)
'''
输出为:A B C
a 1 2 3
b 4 5 6
'''
例2
#还可以通过字典来创建DataFrame对象,键值对应index
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':pd.Categorical(['18','19']),'score':pd.Categorical(['99','98'])})
print(a)
'''
输出为:name age score
0 dn 18 99
1 muss 19 98
'''
DataFrame属性
查看数据类型
我们可以使用DataFrame.dtypes函数来查看每一列的数据类型
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.dtypes)
'''
输出为:
name category
age int64
score int32
dtype: object
'''
查看索引和列名
利用DataFrame.index函数来查看索引
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.index)
'''
输出为:RangeIndex(start=0, stop=2, step=1)
'''
利用DataFrame.columns函数来查看列名
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.columns)
#输出为Index(['name', 'age', 'score'], dtype='object')
查看数据和统计信息
利用DataFrame.values函数来查看数据
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.values)
'''
输出为:
[['dn' 18 98]['muss' 18 99]]
'''
利用DataFrame.describe()函数查看统计信息
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.describe())
'''
输出为:age score
count 2.0 2.000000
mean 18.0 98.500000
std 0.0 0.707107
min 18.0 98.000000
25% 18.0 98.250000
50% 18.0 98.500000
75% 18.0 98.750000
max 18.0 99.000000Process finished with exit code 0'''
DataFrame常用操作
转置
关于转置操作不用多说了,numpy部分已经说过了
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),'age':18,'score':pd.Series(np.arange(98,100))})
print(a.T)
'''
输出为:0 1
name dn muss
age 18 18
score 98 99
'''
排序
排序分为按照index排序和按值排序
按照index排序
import numpy as np
import pandas as pd
s=np.array([6,5,4,3,2,1]).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.sort_index(axis=1))
'''
输出为:a b
0 6 5
1 4 3
2 2 1
'''
按值排序
import numpy as np
import pandas as pd
s=np.array([6,5,4,3,2,1]).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.sort_values(by='b'))
'''
输出为:a b
2 2 1
1 4 3
0 6 5
'''
数据选择
选择列
这将会返回一个单独的列,相当于一个Series对象
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a['a'])
'''
输出为:
0 1
1 3
2 5
'''
选择行
一个道理
#这里我有点迷,直接用行索引会报错,只有使用切片才可以输出,假如想输出第一行就用0:1的方法。
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a[0:1])
'''
输出为:a b
0 1 2
'''
标签选择loc
loc用来获得一个交叉的区域,比如我们想要第1,2行的第a,b列的数据:
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a)
print('.')
print(a.loc[[1,2],['a','b']])
'''
输出为:a b
0 1 2
1 3 4
2 5 6
.a b
1 3 4
2 5 6
'''
当然也可以用来获取单行单列的数据。
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.loc[1])
'''
输出为:a b
0 1 2
1 3 4
2 5 6
.
a 3
b 4
Name: 1, dtype: int32
'''
位置选择iloc
loc是通过标签来对行列进行选择,而iloc是通过行列的位置进行选择,比如说想要第二列,那列位置就写2(假设从1开始).
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a)
print('.')
print(a.iloc[[0,1],0:1])
'''
输出为a b
0 1 2
1 3 4
2 5 6
.a
0 1
1 3
'''
读取文件和导出操作
导入函数 | 导出函数功能 |
---|---|
read_csv | to_csv |
read_excel | to_excel |
read_sql | to_sql |
read_json | to_json |
read_msgpack | to_msgpack |
read_html | to_html |
read_gbq | to_gbq |
read_stata | to_stata |
read_sas | to_sas |
read_clipboard | to_clipboard |
read_pickle | to_pickle |
常用统计方法
函数 | 解释 |
---|---|
count | 非 NA 值的数量 |
describe | 针对 Series 或 DF 的列计算汇总统计 |
min , max | 最小值和最大值 |
argmin , argmax | 最小值和最大值的索引位置(整数) |
idxmin , idxmax | 最小值和最大值的索引值 |
quantile | 样本分位数(0 到 1) |
sum | 求和 |
mean | 均值 |
median | 中位数 |
mad | 根据均值计算平均绝对离差 |
var | 方差 |
std | 标准差 |
skew | 样本值的偏度(三阶矩) |
kurt | 样本值的峰度(四阶矩) |
cumsum | 样本值的累计和 |
cummin , cummax | 样本值的累计最大值和累计最小值 |
cumprod | 样本值的累计积 |
diff | 计算一阶差分(对时间序列很有用) |
pct_change | 计算百分数变化 |
30分钟完成pandas入门相关推荐
- 30分钟git命令入门到放弃
30分钟git命令入门到放弃 Helkyle・ 15 小时前 172 | 暂无评论 这是一篇给像我这样的新手或者是熟悉图形工具的老鸟看的.仅作为快速入门的教程. learn-git git 现在的火爆 ...
- python 30分钟_一张图30分钟快速Python入门
国外一个大牛使用一张图来讲述Python的基本概念,让你30分钟快速入门.通过该程序,可以了解快速Python语言基本的语法结构和使用方法,它的基本程序如下: 当然看不懂没关系这里还有中文版的 # - ...
- 【视频】谷歌大佬30分钟让你入门机器学习(2019谷歌I/O资源分享)
如果你是个谷粉,就一定会知道: 谷歌向来都很大胆.当所有的科技公司都在讲产品.讲利润的时候,2019年的谷歌开发者大会的主题却是:人文关怀.要知道,这是政府操心的事,而不是一家公司的任务. 谷歌敢这样 ...
- 一张图30分钟带你入门python-我,30分钟,P了100张图,秒杀全公司同事
原标题:我,30分钟,P了100张图,秒杀全公司同事 今天,想为大家推荐一款超惊艳的工具,可以让每一个设计汪,瞬间找到人生开挂的感觉! 在这之前,先跟为大家分享个真实的故事. "这感觉真是太 ...
- 30 分钟 git 命令入门
git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中. 初学者非常容易被各种命令,参数吓哭.但实际上刚上手你并不需要了解所有命令的用途.你可以从掌握一些简 ...
- 一张图30分钟带你入门python-大数据时代来了!神级程序员一张图帮你梳理Python脉络,快速入门...
python语言是我目前为止用的最爽的语言,因为它真的很优美.虽然c,c++,java也非常的强大和伟大,但是每一种语言伟大的背后都是有一定的时代背景. 在PC时代大量的嵌入式的设备,底层的代码,以及 ...
- JB的Shell之旅-30分钟带你入门
前言 写这篇文章的目的很简单,因为爱并恨过: 前段时间要改个安卓产品的脚本,惊奇发现理论是用shell,虽然实现的功能不复杂,但如果对没了解过shell或懂皮毛的同学,改起来是相当痛苦(如jb),调试 ...
- 30分钟Cadence原理图入门
新建工程 点击Design Entry CIS图标,选择OrCAD Capture. 新建工程File->New->Project 设置工程名字和路径. 默认生成PAGE1 新建页 右键点 ...
- 30分钟带你入门Oracle
ps:关键字和语法用红色字体标明,代码用蓝色字体标明 一.一些定义 1.数据类型 字符数据类型 char 固定长度字符串 1~2000字节 varchar2 可变长度字符串 ...
最新文章
- LoRDEC: a tool for correcting errors in long sequencing reads 纠正长序列读取错误的工具
- Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
- python面试题之有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
- image 微信小程序flex_第三天学习微信小程序开发总结
- Image-to-Image Translation with Conditional Adversarial Networks
- CentOS获取软件安装包源码
- 倒计时 1 天丨微信大数据挑战赛,即将启动报名
- Unity——RectTransform详解
- Office快捷键汇总(仅供学习交流)
- “GANs之父”Goodfellow 38分钟视频亲授:如何完善生成对抗网络?(上)
- 按钮按下时立体感效果
- 计算机休眠不播放音乐,电脑休眠后不能播放音乐怎么办
- 【Android实现返回主页,禁止返回上一层等功能】
- 【C++】limits头文件 numeric_limits
- CREO 用最简单的方法做个莫比乌斯带
- RISC-V又一开源SoC-zqh_riscv
- 端口映射snmp(端口161)破解网络尖兵
- 最全的android图片加密
- python TypeError: missing 1 required positional argument:‘self‘
- java计算机毕业设计住院工作台系统源程序+mysql+系统+lw文档+远程调试