常用的一些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,因为它满足了模式的要求:以单词边界开头,包含一个或多个数字,有一个点号,再次有一个或多个数字,并以单词边界结尾。

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值