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 的查询条件。查询条件可以包含列名、运算符和值,以及逻辑运算符(如 and
、or
)。
以下是一个示例代码:
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
,因为它满足了模式的要求:以单词边界开头,包含一个或多个数字,有一个点号,再次有一个或多个数字,并以单词边界结尾。