Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)

简介: Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)

3.10 std() ---- 标准差

总体标准差是反映研究总体内个体之间差异程度的一种统计指标。

总体标准差计算公式:

S = ∑ ( X i − X ˉ ) 2 n S=\sqrt{\frac{\sum\left(X_{i}-\bar{X}\right)^{2}}{n}}S=n(XiXˉ)2

由于总体标准差计算出来会偏小,所以采用( n − d d o f ) (n-ddof)(nddof)的方式适当扩大标准差,即样本标准差。

样本标准差计算公式:

S = ∑ ( X i − X ˉ ) 2 n − d d o f S=\sqrt{\frac{\sum\left(X_{i}-\bar{X}\right)^{2}}{n-ddof}}S=nddof(XiXˉ)2

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data)
print(df)
print()
# 总体标准差
print(df.std())
print(df.std(axis=0))
print(df.std(axis=1))

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data)
print(df)
print()
# 样本标准差
print(df.std(ddof=1))
print(df.std(axis=0,ddof=1))
print(df.std(axis=1,ddof=1))

3.11 describe() ---- 统计 DataFrame 的常见统计学指标结果

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data)
print(df)
print()
print(df.describe())

3.12 corr() ---- 求每列之间的相关系数矩阵

相关系数:描述两组样本的相关程度的大小

相关系数:协方差除去两组样本标准差的乘积,是一个 [-1, 1] 之间的数

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data)
print(df)
print()
print(df.corr())

3.12 cov() ---- 求每列之间的协方差矩阵

协方差:可以评估两组统计数据的相关性

协方差正为正相关,负为反相关。绝对值越大,相关性越强。

计算方法:

  1. 计算两组样本的均值
  2. 计算两组样本中的各个元素与均值的差
  3. 协方差为 两组数据离差的乘积的均值
data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data)
print(df)
print()
print(df.cov())

3.13 sort_values() ---- 根据元素值进行排序

参数:

  • by:指定排序参照的字段
  • ascending:True为升序(默认),False为降序
  • axis:排序的方向, 0 - 对行进行排序(默认),1 - 对列进行排序

3.13.1 升序

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['a','b','c','d'], columns=['aa','bb','cc'])
print(df)
print()
# 根据 aa 列对数据进行升序排列
print(df.sort_values(by=['aa']))
# 根据 a 行对数据进行升序排列
print(df.sort_values(by=['a'],axis=1))
# 根据 a 行对数据进行升序排列
print(df.sort_values(by=['a'],axis=1, ascending=True))

3.13.2 降序

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['a','b','c','d'], columns=['aa','bb','cc'])
print(df)
print()
# 根据 aa 列对数据进行降序排列
print(df.sort_values(by=['aa'], ascending=False))
# 根据 a 行对数据进行降序排列
print(df.sort_values(by=['a'],axis=1, ascending=False))

3.14 sort_index() ---- 根据索引值进行排序

参数:

  • ascending:True为升序(默认),False为降序
  • axis:排序的方向, 0 - 对行进行排序(默认),1 - 对列进行排序

3.14.2 升序

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['b','a','d','e'], columns=['cc','aa','bb'])
print(df)
print()
# 默认对行索引进行升序排列
print(df.sort_index())
# 对行索引进行升序排列
print(df.sort_index(axis=0))
# 对列索引进行升序排列
print(df.sort_index(axis=1))

3.14.2 降序

data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['b','a','d','e'], columns=['cc','aa','bb'])
print(df)
print()
# 默认对行索引进行降序排列
print(df.sort_index(ascending=False))
# 对行索引进行降序排列
print(df.sort_index(axis=0,ascending=False))
# 对列索引进行降序排列
print(df.sort_index(axis=1,ascending=False))

3.15 apply() ---- 根据传入的函数参数处理 DataFrame 对象

3.15.1 对每列进行处理

def func(x):
  print(x.values)
  return pd.Series(np.arange(0,x.size))
data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['b','a','d','e'], columns=['cc','aa','bb'])
print(df)
print()
# 默认对每列进行处理,一次处理一列
# 会返回一个原数组处理后的新数组,不会修改原数组
res = df.apply(func)
print(res)
print(df)

3.15.2 对每行进行处理

def func(x):
  print(x.values)
  return pd.Series(np.arange(0,x.size))
data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['b','a','d','e'], columns=['cc','aa','bb'])
print(df)
print()
res = df.apply(func, axis=1)
print(res)
print(df)

3.16 applymap() ---- 根据传入的函数参数处理 DataFrame 对象的每个元素

按列的方向遍历每个元素进行处理,返回一个处理后的新数组,不会修改原数组。

def func(x):
  print(x, end=' ')
  if(x>85): return 999
  else: return 0
data = np.floor(np.random.normal(85, 3, (4,3)))
df = pd.DataFrame(data, index=['b','a','d','e'], columns=['cc','aa','bb'])
print(df)
print()
res = df.applymap(func)
print()
print(res)
print(df)

3.17 groupby() ---- 对 DataFrame 对象中的数据进行分组

参数:

  • by:指定分组的依据,可以接收的参数类型 list、string、mapping、generator
  • axis:操作的轴向,默认对行进行操作,默认为0,接收
  • as_index:表示聚合后的聚合标签是否以DataFrame索引形式输出,默认为True
  • sort:表示是否对分组依据分组标签进行排序,默认为True

返回 Groupby 对象:

  • Groupby.get_group(‘A’):返回A组的详细数据
  • Groupby.size():返回每一组的频数

数据:

left = pd.DataFrame({
         'student_id':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],
         'student_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung', 'Billy', 'Brian', 'Bran', 'Bryce', 'Betty', 'Emma', 'Marry', 'Allen', 'Jean', 'Rose', 'David', 'Tom', 'Jack', 'Daniel', 'Andrew'],
         'class_id':[1,1,1,2,2,2,3,3,3,4,1,1,1,2,2,2,3,3,3,2], 
         'gender':['M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F'], 
         'age':[20,21,22,20,21,22,23,20,21,22,20,21,22,23,20,21,22,20,21,22], 
         'score':[98,74,67,38,65,29,32,34,85,64,52,38,26,89,68,46,32,78,79,87]})
left
right = pd.DataFrame({'class_id':[1,2,3,5],  'class_name': ['ClassA', 'ClassB', 'ClassC', 'ClassE']})
right
data = pd.merge(left, right, how='inner', on='class_id')



相关文章
|
1月前
|
数据采集 机器学习/深度学习 Python
【机器学习】数据清洗——基于Pandas库的方法删除重复点
【机器学习】数据清洗——基于Pandas库的方法删除重复点
53 1
|
2月前
|
存储 数据采集 数据处理
深入探索Pandas的DataFrame:基本用法与案例研究
深入探索Pandas的DataFrame:基本用法与案例研究
|
1月前
|
BI 数据处理 索引
Pandas基本操作:Series和DataFrame(Python)
Pandas基本操作:Series和DataFrame(Python)
108 1
|
1月前
|
人工智能 安全 数据挖掘
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
Pandas AI:Pandas与人工智能的结合,让你不再拘泥于如何使用pandas方法及处理语法
|
12天前
|
存储 数据挖掘 数据处理
Pandas数据结构详解:Series与DataFrame的奥秘
【4月更文挑战第16天】Pandas的Series和DataFrame是数据处理的核心工具。Series是一维标签化数组,支持各种数据类型,可通过索引便捷访问。DataFrame是二维表格型数据结构,适合存储和操作表格数据。两者提供丰富的统计方法和操作,如筛选、排序、分组聚合。它们之间可相互转换和交互,助力高效的数据分析。理解和掌握Series和DataFrame对于数据科学至关重要。
|
1月前
|
存储 数据可视化 数据挖掘
Pandas 28种常用方法使用总结(下)
Pandas 28种常用方法使用总结
|
1月前
|
数据挖掘 Serverless 数据处理
Pandas 28种常用方法使用总结(上)
Pandas 28种常用方法使用总结
|
5天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
20 0
|
6天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
18 2
|
1月前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
41 6