1、查看和预览数据
查看和预览数据是数据分析的第一步,常用方法包括 head()
和 tail()
分别查看前几行和后几行,shape
获取数据的行列数,columns
查看列名,info()
显示每列的数据类型与非空值数量,而 describe()
可快速生成数值型列的统计摘要,帮助了解数据的整体结构和分布情况。head()
方法从顶部开始返回标题和指定的行数。
例如:
通过打印DataFrame的前10行获得快速查看:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head(10))
在示例中,将使用一个名为“data.csv”的CSV文件。
data.csv文件:https://www.cjavapy.com/download/5fe1f74edc72d93b4993067c/
注意:如果未指定行数,则head()
方法将返回前5行。
import pandas as pd
df = pd.read_csv('data.csv') # 假设已加载数据
df.head() # 查看前5行
df.tail(3) # 查看后3行
df.shape # 查看行列数 (行数, 列数)
df.columns # 查看所有列名
df.info() # 查看基本结构和类型
df.describe() # 统计摘要(均值、标准差、四分位等)
2、DataFrame数据信息
DataFrame对象具有称为info()
的方法,该方法为您提供有关数据集的更多信息。
例如:
打印有关数据的信息:
print(df.info())
Result
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 169 entries, 0 to 168
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Duration 169 non-null int64
1 Pulse 169 non-null int64
2 Maxpulse 169 non-null int64
3 Calories 164 non-null float64
dtypes: float64(1), int64(3)
memory usage: 5.4 KB
None
3、筛选与条件分析
筛选与条件分析通过布尔索引对 DataFrame 进行过滤操作,常用语法包括根据单个或多个条件筛选行,如 df[df['age'] > 30]
或 (df['age'] > 30) & (df['score'] > 80)
,可用于快速定位感兴趣的数据子集,是数据分析中最常用且高效的手段之一。
import pandas as pd
df = pd.read_csv('data.csv')
# 返回布尔 Series
print(df['age'] > 30)
# 选出 age > 30 的行
print(df[df['age'] > 30])
# 筛选性别为女
print(df[df['gender'] == 'Female'])
# 多条件筛选
print(df[(df['age'] > 30) & (df['score'] > 80)])
4、基本统计分析
Pandas 的基本统计分析功能可以帮助快速了解数据的整体特征,包括求平均值、最大值、最小值、标准差、中位数等,常用方法如 mean()
、max()
、min()
、std()
、median()
和 value_counts()
等,适用于数值型数据的汇总、分类频次统计和初步趋势判断,是数据分析中的基础操作。
import pandas as pd
# 构造一个示例 DataFrame
data = {
'name': ['张三', '李四', '小明', '小张', '小亮'],
'score': [85, 92, 85, 70, 92]
}
df = pd.DataFrame(data)
# 平均值
print("平均值:", df['score'].mean())
# 中位数
print("中位数:", df['score'].median())
# 标准差
print("标准差:", df['score'].std())
# 最小值和最大值
print("最小值:", df['score'].min())
print("最大值:", df['score'].max())
# 每个分数的出现次数
print("分数分布:")
print(df['score'].value_counts())
5、分组与聚合(groupby)
Pandas 的分组与聚合(groupby
)功能可根据一个或多个字段对数据进行分组,并对每组数据执行如求和、求均值、计数等聚合操作,常用于分类汇总和多维统计分析,是数据分析中处理结构化信息的核心工具之一。
import pandas as pd
# 构造示例 DataFrame
data = {
'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
'score': [85, 90, 78, 82, 88, 75],
'age': [18, 19, 17, 18, 18, 17]
}
df = pd.DataFrame(data)
# 按性别分组求平均成绩
print(df.groupby('gender')['score'].mean())
# 多字段分组统计数量
print(df.groupby(['gender', 'grade']).size())
print(df.groupby('class').agg({
'score': ['mean', 'max'],
'age': 'median'
}))
6、数据透视表分析(pivot_table)
Pandas 的 pivot_table()
函数用于创建数据透视表,通过指定行、列和聚合函数对数据进行多维度汇总和交叉分析,常用于统计对比、分类聚合和生成类似 Excel 的交叉表,是处理复杂结构化数据的高效工具。
import pandas as pd
# 构造示例 DataFrame
data = {
'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
'score': [85, 90, 78, 82, 88, 75],
'age': [18, 19, 17, 18, 18, 17]
}
df = pd.DataFrame(data)
print(df.pivot_table(values='score', index='gender',
columns='grade', aggfunc='mean'))
7、 缺失值处理
缺失值处理是 Pandas 数据清洗的重要步骤,常用方法包括使用 isnull()
检查缺失值、dropna()
删除包含缺失值的行或列、fillna()
用固定值或统计值(如均值、中位数)填充缺失项,从而保证数据完整性和后续分析的准确性。
import pandas as pd
# 构造示例 DataFrame
data = {
'name': ['张三', '李四', '小明', '小张', '小亮', '小刚'],
'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
'grade': ['A', 'A', 'B', 'B', 'A', 'B'],
'class': ['C1', 'C1', 'C2', 'C2', 'C1', 'C2'],
'score': [85, 90, 78, 82, 88, 75],
'age': [18, 19, 17, 18, 18, 17]
}
df = pd.DataFrame(data)
print(df.isnull().sum()) # 每列缺失值统计
print(df.dropna()) # 删除含缺失值的行
print(df.fillna(0)) # 用 0 填充缺失值
# 用均值填充
print(df['score'].fillna(df['score'].mean()))
相关文档: