常用的一些python数据分析函数-记录

1.rank()

 .rank()是 Pandas 中的一个函数,用于为数据进行排名。它会为每个元素分配一个排名值,其中排名值越小表示越靠前。在使用 .rank()函数时,可以使用 method 和 ascending 参数来调整排名的方法和排序顺序。

method 参数用于指定排名的方法,它有以下几个可选值:

  • average(默认值):如果有相同的值,将它们的排名平均分配。
  • min:将相同值的元素分配最低的排名。
  • max:将相同值的元素分配最高的排名。
  • first:按照元素在原始数据中的顺序分配排名。

以下是一个示例代码,展示如何使用 method 参数:

import pandas as pd

# 假设你有一个名为 'data' 的 DataFrame,其中包含一个名为 'column' 的列
# 使用 .rank() 函数,并指定 method='min',将相同值的元素分配最低的排名
data['rank'] = data['column'].rank(method='min')
print(data)

ascending 参数用于指定排序顺序,它有以下两个可选值:

  • True(默认值):按照升序排列,即排名值越小越靠前。
  • False:按照降序排列,即排名值越大越靠前。

以下是一个示例代码,展示如何使用 ascending 参数:

import pandas as pd

# 假设你有一个名为 'data' 的 DataFrame,其中包含一个名为 'column' 的列
# 使用 .rank() 函数,并指定 ascending=False,按照降序排列
data['rank'] = data['column'].rank(ascending=False)
print(data)

2.sort_values()

要按照多列进行升序或降序排列 data 数据,可以使用 Pandas 的 sort_values() 方法。以下是按照多列进行升序或降序排列的示例代码:

sorted_data = data.sort_values(by=['column1', 'column2'], ascending=[True,False])

3.reset_index() 

如果想在使用 reset_index() 方法时重新命名索引列的名称,可以使用 rename() 方法来修改列名。

 dataframe = dataframe.reset_index().rename(columns={'index': new_name})

4.query() 

.query() 是 Pandas 中的一个函数,用于筛选 DataFrame 中满足特定条件的行。

.query() 函数接受一个字符串作为参数,该字符串表示要应用于 DataFrame 的查询条件。查询条件可以包含列名、运算符和值,以及逻辑运算符(如 andor)。

以下是一个示例代码:

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Salary': [50000, 60000, 70000, 80000]}
df = pd.DataFrame(data)

# 使用 .query() 函数筛选出年龄大于等于 35 岁的行
result = df.query('Age >= 35')

# 打印筛选结果
print(result)

.query() 函数还支持使用 @ 符号引用外部变量。例如:

age_threshold = 35
result = df.query('Age >= @age_threshold')

5.concat

如果我想将data1,2,3按照行concat起来,但是这三个数据的行列名称都一样,concat后如何区分?

在使用 pd.concat() 函数将多个 DataFrame 按行连接起来时,可以通过设置 keys 参数来区分每个原始 DataFrame 的来源。以下是一个示例代码:

import pandas as pd

# 假设 data1、data2、data3 是三个要连接的 DataFrame
data1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
data2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
data3 = pd.DataFrame({'A': [13, 14, 15], 'B': [16, 17, 18]})

# 使用 pd.concat() 函数将三个 DataFrame 按行连接起来,并设置 keys 参数
concatenated = pd.concat([data1, data2, data3], keys=['data1', 'data2', 'data3'])

# 打印连接后的结果
print(concatenated)

axis=0按行拼,axis=1按列拼。

6.set_option() 

在 Jupyter Notebook 中,可以使用 pd.set_option() 函数来设置 DataFrame 的显示选项,以便更好地展示内容。以下是一些常用的选项设置:

# 设置最大显示列数:
pd.set_option('display.max_columns', 10)  # 设置最大显示列数为 10
# 设置最大显示行数:
pd.set_option('display.max_rows', 100)  # 设置最大显示行数为 100
# 设置列宽:
pd.set_option('display.max_colwidth', 100)  # 设置列宽为 100
# 设置小数位数:
pd.set_option('display.precision', 2)  # 设置小数位数为 2

如果你想调整特定列的宽度,而不是整个 DataFrame 的列宽度,可以使用 style 属性来设置。以下是一个示例:

df.style.set_properties(subset=['col1'], **{'max-width': '100px'})

7.re.search 

pattern = r'\b\d+\.\d+\b'是什么意思?

pattern = r'\b\d+\.\d+\b' 是一个正则表达式模式,用于匹配具有特定格式的数字字符串。

解析该正则表达式模式:

  • \b 表示单词边界,用于匹配一个单词的开始或结束位置。
  • \d+ 表示匹配一个或多个数字。
  • \. 表示匹配一个点号(小数点)。
  • \d+ 表示再次匹配一个或多个数字。
  • \b 表示单词边界。

因此,该正则表达式模式可以用于匹配满足以下条件的数字字符串:

  • 字符串的开头或结尾是单词边界。
  • 字符串中包含一个或多个数字。
  • 数字之间有一个点号(小数点)。

以下是使用该正则表达式模式进行匹配的示例:

import re

string = "The price is $10.99."
pattern = r'\b\d+\.\d+\b'

match = re.search(pattern, string)

if match:
    print("匹配项找到!")
    print("匹配的子串:", match.group())
else:
    print("未找到匹配项!")

在给定的示例中,正则表达式模式 r'\b\d+\.\d+\b' 可以匹配字符串中的 $10.99,因为它满足了模式的要求:以单词边界开头,包含一个或多个数字,有一个点号,再次有一个或多个数字,并以单词边界结尾。

### Python 数据分析与清洗中的常用函数 #### Pandas 和 NumPy 的核心功能概述 Pandas和NumPy是Python中数据处理和分析的重要组成部分。通过这些工具,在舒适的高级编程环境中可以从简单的数据聚合到复杂的统计建模等一系列任务得以实现[^1]。 #### 使用 Pandas 进行数据清洗 Pandas 提供了多种方法来清理和准备数据集,以便进一步分析: - **缺失值处理** 对于存在缺失值的情况,`dropna()` 可以删除含有任何NA/NaN的行或列;而 `fillna()` 则允许指定填充策略,比如用均值、前向填充等替代缺失值。 ```python import pandas as pd df = pd.DataFrame([[1, 'a'], [None, 'b']], columns=['A', 'B']) # 删除包含缺失值的行 cleaned_df = df.dropna() # 或者使用 fillna() 方法替换缺失值 filled_df = df.fillna(0) ``` - **重复项移除** 当数据集中可能存在冗余记录时,可以通过调用 `duplicated()` 来识别并利用 `drop_duplicates()` 移除它们。 ```python duplicated_rows = df.duplicated(subset='column_name') unique_df = df.drop_duplicates(subset='column_name') ``` - **字符串操作** 针对文本字段,Pandas 支持一系列矢量化的方法来进行转换,如大小写调整、去除空白字符以及正则表达式的匹配等。 ```python str_series = pd.Series([' Hello ', 'World! ']) clean_str_series = (str_series.str.strip().str.lower()) ``` #### 使用 NumPy 执行高效运算 对于数值型数组的操作,NumPy 展现出了卓越性能优势: - **创建多维数组** 构造不同形状的 ndarray 数组对象,方便后续矩阵计算或其他线性代数运算。 ```python import numpy as np array_2d = np.array([[1., 2.], [3., 4.]]) # 创建二维浮点型数组 ones_array = np.ones((3, 4)) # 初始化全为1的三维整数数组 zeros_array = np.zeros_like(array_2d) # 根据现有数组尺寸生成零初始化副本 random_array = np.random.rand(5, 5) # 生产均匀分布随机实数构成的五阶方阵 ``` - **广播机制下的算术运算** 即使两个ndarray维度不完全相同也可以按照一定规则自动扩展参与加减乘除四则混合运算。 ```python scalar_addition = array_2d + 1 # 向量加上常数 elementwise_multiplication = array_2d * 2 # 元素级相乘 matrix_product = np.dot(array_2d.T, array_2d)# 矩阵转置后的内积 ``` 综上所述,无论是面对结构化还是非结构化的原始资料源文件,借助 Pandas 和 NumPy 库所提供的强大 API 接口,都能有效地完成预处理工作流中的各项子任务[^2][^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值