将字典创建为DataFrame
import numpy as np
import pandas as pd
data = {
"grammer": ["Python", "C", "Java", "GO", np.nan, "SQL", "PHP", "Python"],
"score": [1, 2, np.nan, 4, 5, 6, 7, 10]
}
df = pd.DataFrame(data = data)
df
运行结果
提取含有字符串"python"的行
df[df['grammer'] == 'Python']
运行结果
修改第二列的列名为'popularity'
修改列名的两种方法
- df.columns = [' 列名1 ', ' 列名2 '], 适用于修改所有的列名。
- df.rename(columns = {' 原列名 ' : ' '})
df.rename
是 Pandas 库中用于重命名 DataFrame 的方法。这个方法允许你重命名 DataFrame 的行索引或列名。
df.rename
方法的参数index
和 columns
:这两个参数分别用于重命名行索引和列名。它们可以接受与 mapper
相同类型的输入,即字典或函数。
df1 = df.rename(columns = {'score':'popularity'}) df1
运行结果
统计grammer列中每种编程语言出现的次数
value_counts
方法的默认行为是返回一个按频率降序排列的 Series,这意味着最常见的值会排在最前面。默认情况下,它会排除空值(NaN),但你可以通过设置 dropna=False
来包括空值。
df['grammer'].value_counts()
运行结果
提取popularity列中值大于3的行
df1[(df1['popularity'] > 3) & (df1['popularity'] < 7)]
这段代码是一个布尔索引表达式,用于筛选 DataFrame df1
中 popularity
列的值在 3 到 7 之间的行。具体来说,这段代码创建了一个布尔掩码(Boolean mask),该掩码可以用于过滤 DataFrame 中满足特定条件的行。
运行结果
交换两列位置
df2 = df1.reindex( columns = ['popularity','grammer'])
df2
reindex
方法的主要作用是根据新的索引或列标签重新排列 DataFrame。它可以接受多个参数,其中 columns
参数用于指定新的列标签顺序。
运行结果
提取popularity列最大值所在行
df2[df2['popularity'] == df2['popularity'].max()]
运行结果
删除最后一行数据
df2.drop(7)#默认删除行
删除索引drop和de1方法都能够删DataFrame中的列数据。
区别:
drop是pandas的内置函数,对行和列都可以进行操作,一次可以处理多个项目,效率高。
del是python的内置函数,仅对列进行操作,一次只允许处理一个
统计grammer列每个字符串的长度
df2['grammer_length'] = df2['grammer'].apply(lambda x: len(str(x)) if pd.notnull(x) else 0)
df2
这里我们调用了 apply
方法,这个方法允许我们对列中的每个元素应用一个函数。在这个例子中,我们传递了一个匿名函数(lambda 函数)作为参数。这个 lambda 函数的作用是:如果元素 x
不是空值(通过 pd.notnull(x)
检查),则将其转换为字符串并计算其长度;如果元素 x
是空值,则返回 0。
函数映射-apply
对DataFrame的apply操作:
默认axis=1对每行row执行指定函数;
当axis=0时,对每列columns执行指定函数;传入指定函数的默认形式均为Series;对每个Series执行结果后,会将结果整合返回;DataFrame和Series的apply一样能接收复杂函数。
运行结果
loc与iloc
loc是location的意思,逗号前面为行,逗号后面为列。
iloc中i的意思是指integer所以它只接受整数索引。
# 创建一个简单的 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
df
#运行结果
A B
a 1 4
b 2 5
c 3 6
# 使用 loc 选择单行
row_b = df.loc['b']
row_b
#运行结果
A 2
B 5
Name: b, dtype: int64
---------------------------------
# 使用 loc 选择多行
rows_ac = df.loc[['a', 'c']]
rows_ac
#运行结果
A B
a 1 4
c 3 6
--------------------------------
# 使用 loc 选择行和列
cell_b_A = df.loc['b', 'A']
cell_b_A
#运行结果
2
---------------------------------
# 使用 loc 选择多行和多列
subset = df.loc[['a', 'b'], ['A', 'B']]
subset
#运行结果
A B
a 1 4
b 2 5
# 使用 iloc 选择单行
row_1 = df.iloc[1]
row_1
#运行结果
A 2
B 5
Name: b, dtype: int64
-----------------------------
# 使用 iloc 选择多行
rows_02 = df.iloc[[0, 2]]
rows_02
#运行结果
A B
a 1 4
c 3 6
-----------------------------
# 使用 iloc 选择行和列
cell_1_0 = df.iloc[1, 0]
cell_1_0
#运行结果
2
------------------------------
# 使用 iloc 选择多行和多列
subset = df.iloc[[0, 1], [0, 1]]
subset
#运行结果
A B
a 1 4
b 2 5