Series

Series是一个一维的向量,每个值都会有对应标签,该标签我们称之为Index

Obj = Series([4, 5, -7, 8])

Obj

Out[5]:

0 4

1 5

2 -7

3 8

dtype: int64

Obj2 = Series([4, 5, -7, 8], index = ['a', 'b', 'c', 'd'])

Obj2

Out[7]:

a 4

b 5

c -7

d 8

dtype: int64

通过Index可以对Series进行查询以及修改

Obj2['a']

Out[12]: 4

Obj2['a'] = 0

Obj2

Out[14]:

a 0

b 5

c -7

d 8

dtype: int64

Numpy函数,以及其他类Numpy的向量计算函数,可以应用在Series中,与Numpy的ndarrays基本相同

Obj * 2

Out[16]:

0 8

1 10

2 -14

3 16

dtype: int64

python的dict数据可以直接转换为Series

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

obj3 = pd.Series(sdata)

obj3

Out[17]:

Ohio 35000

Texas 71000

Oregon 16000

Utah 5000

dtype: int64

DataFrame

DataFrame是我作为数据分析师,最为常用的一个数据类型。DataFrame代表了一个长方形的表,包含了任意的长度及宽度(可以理解为在Excel中的一个表)。DataFrame拥有Column Index和Row Index(行标与列标)。

最常见的创建DataFrame的方法为从一个包含了Numpy arrays的dict数据转换

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],

'year': [2000, 2001, 2002, 2001, 2002, 2003],

'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}

frame = pd.DataFrame(data)

frame

Out[19]:

state year pop

0 Ohio 2000 1.5

1 Ohio 2001 1.7

2 Ohio 2002 3.6

3 Nevada 2001 2.4

4 Nevada 2002 2.9

5 Nevada 2003 3.2

在创建通过表头的名字,我们可以更换列的顺序

frame = pd.DataFrame(data, columns = ['year', 'state', 'pop'])

frame

Out[21]:

year state pop

0 2000 Ohio 1.5

1 2001 Ohio 1.7

2 2002 Ohio 3.6

3 2001 Nevada 2.4

4 2002 Nevada 2.9

5 2003 Nevada 3.2

创建完成后,可以选择使用列名查询某列

frame['pop']

Out[22]:

0 1.5

1 1.7

2 3.6

3 2.4

4 2.9

5 3.2

loc方法可以查询某行

frame.loc[1]

Out[23]:

year 2001

state Ohio

pop 1.7

Name: 1, dtype: object

直接指定好列名以及对应的行,便可以很便利的向pandas添加数据,空的数据会在pandas中展示为NaN

frame['city'] = Series(['Kent', 'Las Vegas'], index = [0, 3])

frame

Out[25]:

year state pop city

0 2000 Ohio 1.5 Kent

1 2001 Ohio 1.7 NaN

2 2002 Ohio 3.6 NaN

3 2001 Nevada 2.4 Las Vegas

4 2002 Nevada 2.9 NaN

5 2003 Nevada 3.2 NaN

Pandas方法

使用loc和iloc可以对一个dataframe执行分页操作

loc为选取该名字的行与列,iloc为选取第x行和第y列

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],

'year': [2000, 2001, 2002, 2001, 2002, 2003],

'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}

frame = pd.DataFrame(data, index = ['one', 'two', 'three', 'four', 'five', 'six'])

frame

Out[34]:

state year pop

one Ohio 2000 1.5

two Ohio 2001 1.7

three Ohio 2002 3.6

four Nevada 2001 2.4

five Nevada 2002 2.9

six Nevada 2003 3.2

frame.loc[['two', 'three'], ['state', 'year']]

Out[37]:

state year

two Ohio 2001

three Ohio 2002

frame.iloc[[2, 3], [0, 1]]

Out[38]:

state year

three Ohio 2002

four Nevada 2001

DataFrame 计算与缺失值

DataFrame基础计算方法包括了加、减、乘、除、次方、整除等

计算方法

在计算方法中,fill_value值可以控制缺失值的替换

df1 = DataFrame(np.arange(12.).reshape(3, 4), columns = list('abcd'))

df2 = DataFrame(np.arange(15.).reshape(3, 5), columns = list('abecd'))

df1

Out[59]:

a b c d

0 0.0 1.0 2.0 3.0

1 4.0 5.0 6.0 7.0

2 8.0 9.0 10.0 11.0

df2

Out[60]:

a b e c d

0 0.0 1.0 2.0 3.0 4.0

1 5.0 6.0 7.0 8.0 9.0

2 10.0 11.0 12.0 13.0 14.0

df1 + df2

Out[61]:

a b c d e

0 0.0 2.0 5.0 7.0 NaN

1 9.0 11.0 14.0 16.0 NaN

2 18.0 20.0 23.0 25.0 NaN

df1.add(df2, fill_value = 0)

Out[62]:

a b c d e

0 0.0 2.0 5.0 7.0 2.0

1 9.0 11.0 14.0 16.0 7.0

2 18.0 20.0 23.0 25.0 12.0

除此之外reindex可以调整一个dataframe的shape,例如df1可以添加一行与df2保持一致

df1.reindex(columns = df2.columns, fill_value = 0)

Out[63]:

a b e c d

0 0.0 1.0 0 2.0 3.0

1 4.0 5.0 0 6.0 7.0

2 8.0 9.0 0 10.0 11.0

函数应用以及mapping

NumPy的ufuncs(向量化函数)是可以在DataFrame中应用的

例如我们定义一个函数,求该行的范围(最大值与最小值的绝对差)

frame

Out[152]:

b d e

Utah 0.0 1.0 2.0

Ohio 3.0 4.0 5.0

Texas 6.0 7.0 8.0

Oregon 9.0 10.0 11.0

get_range = lambda x: x.max() - x.min()

frame.apply(get_range)

Out[154]:

b 9.0

d 9.0

e 9.0

dtype: float64

frame.apply(get_range, axis = 'columns')

Out[158]:

Utah 2.0

Ohio 2.0

Texas 2.0

Oregon 2.0

dtype: float64

创建描述性统计函数

data = pd.DataFrame(np.random.randn(1000, 4))

data

Out[296]:

a b c d

0 0.660991 1.166362 -0.282237 -0.061292

1 -0.815670 0.220678 -0.072469 -0.343580

2 -1.431911 0.824215 -0.915729 -0.659971

3 0.696466 -0.556472 0.129206 0.739566

4 -1.475857 -0.043149 -1.839006 0.099850

.. ... ... ... ...

995 0.135430 0.923296 -0.819932 -0.876656

996 1.767997 1.747973 -0.609283 -0.608092

997 -0.239235 0.376930 0.154019 0.660505

998 0.202736 -0.214131 0.926638 -0.810888

999 -0.144855 -0.463251 0.984850 1.368218

[1000 rows x 4 columns]

def statistical_describe(DataFrame_input) -> DataFrame:

return DataFrame_input.apply(lambda x: pd.Series([len(x), sum(x)/len(x),

(sum((x - sum(x)/len(x))**2)/len(x))**.5,

x.min(), x.quantile(.25), x.quantile(.5), x.quantile(.75), x.max()],

index = ['count', 'mean', 'std', 'min', '.25', '.50', '.75', 'max']))

statistical_describe(data)

Out[297]:

a b c d

count 1000.000000 1000.000000 1000.000000 1000.000000

mean 0.035889 0.031281 -0.005168 -0.063525

std 1.035586 0.978126 0.975315 0.994380

min -3.068035 -3.513137 -3.373269 -3.251473

.25 -0.643046 -0.594430 -0.664430 -0.749127

.50 0.006002 0.051688 -0.010682 -0.087670

.75 0.714898 0.715789 0.663933 0.605968

max 3.790818 3.867886 2.673977 3.488003

python数据分页pandas,Python数据分析[3] - Pandas包相关推荐

  1. python数据建模工具_python数据分析工具——Pandas、StatsModels、Scikit-Learn

    Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 ...

  2. python txt文件读写 pandas_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  3. python数据生成可视化_Python数据分析:手把手教你用Pandas生成可视化图表

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  4. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

  5. 经济学中的定量分析python_(转)Python中的结构化数据分析利器-Pandas简介

    Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发tea ...

  6. 【Python数据科学】第三章 Pandas 数据处理(下半章)

    7.合并数据集:合并与连接 Pandas 的基本特性之一就是高性能的内存式数据连接(join)和合并(merge)操作.如果你有使用数据库的经验,那么对这类操作一定很熟悉.Pandas 的主接口是pd ...

  7. python数据科学-单变量数据分析

    总第85篇 01|背景: 我们在做机器学习之前,需要自己先对数据进行深入的了解(这些数据是什么类型,总共有多少数据,有没有缺失值,均值是多少之类的),只有自己对数据足够了解了,才能够更好地利用机器学习 ...

  8. python数据分享人力资源_Python数据分析帮你清晰的了解整理员工们的工作效率和整体满意度...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 项目背景 2018年,被称为互联网的寒冬之年.无论大小公司,纷纷走上了裁员 ...

  9. pandas python2_Python数据分析之pandas学习(二)

    有关pandas模块的学习与应用主要介绍以下8个部分: 1.数据结构简介:DataFrame和Series 2.数据索引index 3.利用pandas查询数据 4.利用pandas的DataFram ...

  10. 【Pandas】数据分析工具Pandas的基本操作和可视化工具Matplotlib

    1.Pandas简介 pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的 ...

最新文章

  1. python3.6.2怎样安装,python 3.6.2 安装配置方法图文教程
  2. 为什么对高斯分布的方差的极大似然估计是有偏的?
  3. js鼠标略过自动选择当前行
  4. Pytorch实现基本循环神经网络RNN (3)
  5. NetBeans可用性提示
  6. asp 调用java文件上传_用asp实现文件浏览、上传、下载的程序
  7. Java解决空引用_Java 匠人手法 - 优雅的处理空值
  8. Delphi利用Windows GDI实现文字倾斜
  9. pssh批量远程管理
  10. 消除类游戏(js版)
  11. Python还能走多远?
  12. 第十届蓝桥杯B组C/C++省赛编程题题目及答案解析
  13. 为什么都不想去中科创达_那些过年不想回家的人,都去了哪?
  14. 对比学习(Contrastive Learning) (1)
  15. 书翻页效果php,Css实现翻书效果
  16. 鸿蒙轻量设备侧Camera应用中的Surface使用
  17. AD的单端输入和查分输入
  18. 腾讯要建超级大脑,用三张网实现AI in All万物互联
  19. java编程题身高排队_身高排队算法-(较优解):12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?...
  20. 杭电计算机学院毕业要求,杭州电子科技大学关于攻读博士学位研究生培养工作的规定...

热门文章

  1. Python的变量与递归函数1-全局变量与局部变量
  2. tensorflow识别猫与狗
  3. 专题·深度优先搜索(DFS)【including 2N皇后,等边三角形,中国邮递员问题
  4. java弹球游戏代码_疯狂java实战演义 弹球游戏代码
  5. 图论算法之最短路径(Dijkstra、Floyd、Bellman-ford和SPFA)
  6. WiFi管理帧(一)(信道切换)
  7. 关于函数递归和函数迭代,我的理解
  8. 【音视频第7天】mediasoup拥塞控制【未完待续】
  9. flink实时数仓(三):cannel
  10. python实现自动点赞——实践_2022-01-02