来源:投稿 作者:sunny
编辑:学姐
Pandas是Python最常用的数据处理库之一,本文介绍其最常用的31个基础操作。
首先,我们需要导入pandas库,并创建一个DataFrame。这里我们使用字典来创建一个简单的DataFrame:
import pandas as pd
# 创建一个字典,作为 DataFrame 的数据
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [25, 30, 35, 40, 45],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
'Salary': [70000, 80000, 90000, 100000, 110000]
}
# 将字典转换为 DataFrame
df = pd.DataFrame(data)
# 显示 DataFrame
print("Initial DataFrame:")
print(df)
1、
查看数据的前几行
# 查看前 5 行数据
print("\n1. First 5 rows:")
print(df.head())
2、
查看数据的后几行
# 查看最后 5 行数据
print("\n2. Last 5 rows:")
print(df.tail())
3、
获取 DataFrame 的形状
# 获取行数和列数
print("\n3. DataFrame shape:")
print(df.shape)
4、
获取列名
# 获取所有列名
print("\n4. Column names:")
print(df.columns)
5、
获取数据类型
# 获取每列的数据类型
print("\n5. Data types of columns:")
print(df.dtypes)
6、
选择单列
# 选择 'Name' 列
print("\n6. 'Name' column:")
print(df['Name'])
7、
选择多列
# 选择 'Name' 和 'City' 列
print("\n7. 'Name' and 'City' columns:")
print(df[['Name', 'City']])
8、
选择行
# 根据行索引选择第 2 行数据
print("\n8. Row at index 1:")
print(df.iloc[1])
9、
选择特定的行和列
# 选择第 2 行和 'Name' 列
print("\n9. 'Name' column value at row index 1:")
print(df.loc[1, 'Name'])
10、
条件筛选
# 筛选年龄大于 30 的数据
print("\n10. Rows where 'Age' > 30:")
print(df[df['Age'] > 30])
11、
按列排序
# 按 'Age' 列升序排序
print("\n11. DataFrame sorted by 'Age':")
print(df.sort_values(by='Age'))
12、
按行排序
# 按 'Salary' 列降序排序
print("\n12. DataFrame sorted by 'Salary' (descending):")
print(df.sort_values(by='Salary', ascending=False))
13、
重置索引
# 重置 DataFrame 索引
print("\n13. DataFrame with reset index:")
print(df.reset_index(drop=True))
14、
设置索引
# 设置 'Name' 列为索引
df.set_index('Name', inplace=True)
print("\n14. DataFrame with 'Name' as index:")
print(df)
15、
删除列
# 删除 'City' 列
df.drop(columns='City', inplace=True)
print("\n15. DataFrame after dropping 'City' column:")
print(df)
16、
添加列
# 添加 'Experience' 列
df['Experience'] = [1, 2, 3, 4, 5]
print("\n16. DataFrame after adding 'Experience' column:")
print(df)
17、
删除行
# 删除第 2 行
df.drop(index=1, inplace=True)
print("\n17. DataFrame after dropping row at index 1:")
print(df)
18、
填充缺失值
# 添加一些缺失值
df.loc[0, 'Salary'] = None
# 用 0 填充缺失值
df.fillna(0, inplace=True)
print("\n18. DataFrame after filling missing values with 0:")
print(df)
19、
删除缺失值
# 重新引入缺失值
df.loc[2, 'Salary'] = None
# 删除包含缺失值的行
df.dropna(inplace=True)
print("\n19. DataFrame after dropping rows with missing values:")
print(df)
20、
计算基本统计量
# 计算每列的统计量
print("\n20. Statistical summary of DataFrame:")
print(df.describe())
21、
计算列的均值
# 计算 'Salary' 列的均值
print("\n21. Mean of 'Salary':")
print(df['Salary'].mean())
22、
计算列的标准差
# 计算 'Salary' 列的标准差
print("\n22. Standard deviation of 'Salary':")
print(df['Salary'].std())
23、
分组统计
# 重新添加 'City' 列用于分组
df['City'] = ['New York', 'Houston', 'Phoenix', 'Los Angeles', 'Chicago']
# 按 'City' 列分组,并计算 'Salary' 的均值
print("\n23. Average 'Salary' by 'City':")
print(df.groupby('City')['Salary'].mean())
24、
合并 DataFrame
# 创建另一个 DataFrame
data2 = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Department': ['HR', 'IT', 'Finance']
}
df2 = pd.DataFrame(data2)
# 合并两个 DataFrame
merged_df = pd.merge(df.reset_index(), df2, on='Name')
print("\n24. Merged DataFrame:")
print(merged_df)
25、
连接 DataFrame
# 创建另一个 DataFrame
data3 = {
'Name': ['Frank', 'Grace'],
'Age': [50, 55],
'City': ['Dallas', 'Austin'],
'Salary': [120000, 130000]
}
df3 = pd.DataFrame(data3)
# 纵向连接 DataFrame
concat_df = pd.concat([df, df3], ignore_index=True)
print("\n25. Concatenated DataFrame:")
print(concat_df)
26、
透视表
# 创建透视表
pivot_table = pd.pivot_table(df, values='Salary', index='City', aggfunc='mean')
print("\n26. Pivot table of 'Salary' by 'City':")
print(pivot_table)
27、
数据透视
# 将 'Salary' 列转为行数据
melted_df = pd.melt(df, id_vars=['Name'], value_vars=['Salary'])
print("\n27. Melted DataFrame:")
print(melted_df)
28、
应用函数
# 对 'Salary' 列应用一个函数
df['Salary_in_thousands'] = df['Salary'].apply(lambda x: x / 1000)
print("\n28. DataFrame after applying function to 'Salary':")
print(df)
29、
字符串操作
# 将 'City' 列中的所有城市名转换为大写
df['City'] = df['City'].str.upper()
print("\n30. DataFrame with 'City' in uppercase:")
print(df)
30、
去除重复值
# 去除重复的行(重新添加重复行进行测试)
df = df.append(df.iloc[0], ignore_index=True)
print("\n31. DataFrame with duplicate rows:")
print(df.drop_duplicates())
31、
筛选唯一值