关于数据分析:Python数据分析-Pandas核心操作函数大全

42次阅读

共计 4521 个字符,预计需要花费 12 分钟才能阅读完成。

作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/33
本文地址:http://www.showmeai.tech/article-detail/146
申明:版权所有,转载请分割平台与作者并注明出处

当咱们提到 python 数据分析的时候,大部分状况下都会应用 Pandas 进行操作。本篇为 pandas 系列的导语,对 pandas 进行简略介绍,整个系列笼罩以下内容:

  • 图解 Pandas 外围操作函数大全
  • 图解 Pandas 数据变换高级函数
  • Pandas 数据分组与操作

本篇为『图解 Pandas 外围操作函数大全』,解说 Pandas 进行数据操作和解决的外围数据结构:Series、DataFrame 和 Index。

一、Pandas Series

Series 是一个一维的数组对象,它蕴含一个值序列和一个对应的索引序列。Numpy 中的一维数组也有隐式定义的整数索引,能够通过它获取元素值,而 Series 用一种显式定义的索引与元素关联。
显式索引让 Series 对象领有更强的能力,索引能够是整数或别的类型(比方字符串),索引能够反复,也不须要间断,自由度十分高。

pandas.Series(data, index, dtype, copy)

1.1 从 numpy array 创立 Series

如果数据是 ndarray,则传递的索引必须具备雷同的长度。如果没有传递索引值,那么默认的索引将是范畴(n),其中 n 是数组长度,即 [0,1,2,3…,range(len(array))-1]

pandas.Series(np.array([47, 66, 48, 77, 16, 91]))

1.2 从字典创立 Series

字典 (dict) 能够作为输出传递。如果没有指定索引,则按排序程序获得字典键以结构索引。如果传递了索引,索引中与标签对应的数据中的值将被拉出。

pandas.Series({‘a’:47,‘b’:66,‘c’:48,‘d’:77,‘e’:16,‘f’:91,})

1.3 Series 数据的拜访

通过各种形式拜访 Series 数据,系列中的数据能够应用相似于拜访 numpy 中的 ndarray 中的数据来拜访。

data
data[0]
data[:3]
data[0:3]
data[2:4]
data[4:]

1.4 Series 的聚合统计

Series 有很多的聚合函数,能够不便的统计最大值、求和、平均值等

二、DataFrame(数据帧)

DataFrame 是 Pandas 中应用最频繁的外围数据结构,示意的是二维的矩阵数据表,相似关系型数据库的构造,每一列能够是不同的值类型,比方数值、字符串、布尔值等等。

DataFrame 既有行索引,也有列索引,它能够被看做为一个共享雷同索引的 Series 的字典。它的列的类型可能不同,咱们也能够把 Dataframe 设想成一个电子表格或 SQL 表。

pandas.DataFrame(data, index, columns, dtype, copy)

2.1 从列表创立 DataFrame

从列表中很不便的创立一个 DataFrame,默认行列索引从 0 开始。

s = [[47, 94, 43, 92, 67, 19],
[66, 52, 48, 79, 94, 44],
[48, 21, 75, 14, 29, 56], 
[77, 10, 70, 42, 23, 62], 
[16, 10, 58, 93, 43, 53],
[91, 60, 22, 46, 50, 41],
]
pandas.DataFrame(s)

2.2 从字典创立 DataFrame

从字典创立 DataFrame,主动依照字典进行列索引,行索引从 0 开始。

s = [‘a’:[47, 66, 48, 77, 16, 91],‘b’:[94, 52, 21, 10, 10, 60],‘c’:[43, 48, 75, 70, 58, 22],‘d’:[92, 79, 14, 42, 93, 46],‘e’:[67, 94, 29, 23, 43, 50],‘f’:[19, 44, 56, 62, 55, 41],
]
pandas.DataFrame(s, columns=[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’))

2.3 pandas Dataframe 列抉择

在刚学 Pandas 时,行抉择和列抉择非常容易混同,在这里进行一下整顿罕用的列抉择。

data[[‘a’]]      # 返回 a 列,DataFrame 格局
data.iloc[:,0]   # 返回 a 列,Series 格局
data.a           # 返回 a 列,Series 格局
data[‘a’]        # 返回 a 列,Series 格局

data.iloc[:,[0,3,4]]
data[[‘a’,‘d’,‘e’]]
data.iloc[:,[‘a’,‘d’,‘e’]]
data.iloc[:,2:]    # 第 3 列及当前
data.iloc[:,2:5]   # 第 3、4、5 列
data.iloc[:,:2]    # 开始两列

2.4 pandas Dataframe 行抉择

整顿多种行抉择的办法,总有一种适宜你的。

data[1:2]
data.loc[1:1]
data.loc[1] #返回 Series 格局

data.iloc[-1:]
data[-1:]
data.tail(1)

data[2:5]
data.loc[2:4]

data.iloc[[2, 3, 5],:]

data.head(2)
data.tail(2)


data.sample(3)

2.5 pandas Dataframe 返回指定行列

pandas 的 DataFrame 十分不便的提取数据框内的数据。

data.iat[1, 2]

data.iloc[[2, 3, 5],[11, 4]]

2.6 pandas Dataframe 条件查问

对各类数值型、文本型,单条件和多条件进行行抉择

data.[data.a>50]
data[data[‘a’]>50]
data.loc[data.a>50,:]
data.loc[data[‘a’]>50,:]

data.loc[(data.a>40) & (data.b>60),:]
data[(data.a>40)&(data.b>40)]

data.loc[data.a>50, [‘a’,‘b’,‘d’]]
data.loc[data[‘a’]>50, [‘a’,‘b’,‘d’]]

data.loc[(data.a>50)|(data.g==‘GD’),[‘a’,‘b’,‘g’]]
data.loc[(data.a>50)|(data.g.isin([‘GD’,‘SH’])),[‘a’,‘b’,‘g’]]

2.7 pandas Dataframe 聚合

能够按行、列进行聚合,也能够用 pandas 内置的 describe 对数据进行操作简略而又全面的数据聚合剖析。

data.sum(axis=1)
numpy.mean(data.values)
data.sum(axis=0)

data.describe()

2.8 pandas Dataframe 中的聚合函数

data.function(axis=0)  # 按列计算
data.function(axis=1)  # 按行计算

2.9 pandas Dataframe 分组统计

能够依照指定的多列进行指定的多个运算进行汇总统计。

df.groupby(‘g’).sum
df.groupby(‘g’)([‘d’]).agg([numpy.sum, numpy.mean, numpy.std])
df.groupby([‘g’,‘h’]).mean

2.10 pandas Dataframe 透视表

透视表是 pandas 的一个弱小的操作,大量的参数齐全能满足你个性化的需要。

pandas.pivot_table(df, index=‘g’, values=‘a’, columns=[‘h’], aggfunc=[numpy.sum], fill_value = 0, margins=True)

2.11 pandas Dataframe 解决缺失值

pandas 对缺失值有多种解决方法,满足各类需要。

data.dropna(axis=0)

data.dropna(axis=1)

data.dropna(axis=0)

2.12 pandas Dataframe 查找替换

pandas 提供简略的查找替换性能,如果要简单的查找替换,能够应用 map()apply()applymap()

data.replace(‘GD’,‘GDS’)

df.loc[df.a>50,‘a’]=888

2.13 pandas Dataframe 多数据源合并

两个 DataFrame 的合并,pandas 会主动依照索引对齐,能够指定两个 DataFrame 的对齐形式,如内连贯外连贯等,也能够指定对齐的索引列。

df3 = pandas.merge(df1, df2, how=‘inner’)

df3 = pandas.merge(df1, df2, how=‘inner’, left_index=True, right_index=True)

2.14 pandas Dataframe 更改列名

pandas 要对 Dataframe 的列名进行批改,操作如下:

data.columns=[‘a’,‘b’,‘c’,‘d’,‘’e,‘f’]

2.15 pandas Dataframe 的 apply 变换函数

这是 pandas 的一个弱小的函数,能够针对每一个记录进行单值运算,无需手动写循环进行解决。

df[‘i’]=df.apply(compute, axis=1)  # a+b>100 返回 1,否则返回 0,寄存到新的一列
df[‘i’]=df.apply(compute2, axis=1)  # g 蕴含 GD、FJ 的,e 小于 50 的,返回 1,否则返回 0 

def compute(arr):
   a = arr['a']
   b = arr['b']
   if a+b>100:
       return 1
   else:
       return 0
def compute2(arr):
   a = arr['e']
   b = arr['g']
   if (g in ['GD','FJ']) and (e<50):
       return 1
   else:
       return 0

材料与代码下载

本教程系列的代码能够在 ShowMeAI 对应的 github 中下载,可本地 python 环境运行,能迷信上网的宝宝也能够间接借助 google colab 一键运行与交互操作学习哦!

本系列教程波及的速查表能够在以下地址下载获取:

  • Pandas 速查表
  • NumPy 速查表
  • Matplotlib 速查表
  • Seaborn 速查表

拓展参考资料

  • Pandas 官网教程
  • Pandas 中文教程

ShowMeAI 相干文章举荐

  • 数据分析介绍
  • 数据分析思维
  • 数据分析的数学根底
  • 业务认知与数据初探
  • 数据荡涤与预处理
  • 业务剖析与数据挖掘
  • 数据分析工具地图
  • 统计与数据科学计算工具库 Numpy 介绍
  • Numpy 与 1 维数组操作
  • Numpy 与 2 维数组操作
  • Numpy 与高维数组操作
  • 数据分析工具库 Pandas 介绍
  • 图解 Pandas 外围操作函数大全
  • 图解 Pandas 数据变换高级函数
  • Pandas 数据分组与操作
  • 数据可视化准则与办法
  • 基于 Pandas 的数据可视化
  • seaborn 工具与数据可视化

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

正文完
 0