Pandas的使用
Pandas
使用 泰坦尼克号乘客数据集
理解 Pandas 的两大核心数据结构
Series:一维数据结构,类似于列表或数组
1
2df = pd.Series([1,2,3,4])
print(df)输出结果:
1
2
3
4
50 1
1 2
2 3
3 4
dtype: int64DataFrame:二维数据结构,类似于表格或电子表格。
1
2
3
4
5
6df = pd.DataFrame({
"Name":['kangkang','liubei','hangliu'],
"Age":[12,23,25],
"Sex":["男","男","女"]
})
print(df)输出结果:
1
2
3
4Name Age Sex
0 kangkang 12 男
1 liubei 23 男
2 hangliu 25 女
加载和查看数据
1
2
3
4df = pd.read_csv('titanic.csv')
print(df.head(2)) # 查看前几行
print(df.tail(2)) # 查看最后几行
print(df.info()) # 查看数据的基本信息(列、非空值等)输出内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32PassengerId Survived ... Cabin Embarked
0 1 0 ... NaN S
1 2 1 ... C85 C
[2 rows x 12 columns]
PassengerId Survived ... Cabin Embarked
889 890 1 ... C148 C
890 891 0 ... NaN Q
[2 rows x 12 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Sex 891 non-null object
5 Age 714 non-null float64
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
10 Cabin 204 non-null object
11 Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
#这里具体解释一下 ,这里列出了数据集是891行,12列,每一列表示数据集中的一个特征(例如乘客ID、是否幸存、乘客等级、名字、性别、年龄等),而每一行代表一个乘客的记录。数据选择与筛选
1
2
3print(df['name']) # 选择'name'这一列
print(df.iloc[0]) # 选择第一行
print(df[df['age'] > 15]) # 筛选出age大于15的行1
2
3
4
5
6
7
8
9
10
11
12
130 kangkang
1 liula
2 hahaha
Name: name, dtype: object
name kangkang
age 17
sex maln
Name: 0, dtype: object
name age sex
0 kangkang 17 maln
1 liula 18 woman数据清洗与处理
处理缺失值
1
2
3df.isnull().sum() # 查看每列缺失值的数量
df.dropna() # 删除所有包含缺失值的行
df.fillna(0) # 用 0 填充缺失值重复数据处理
1
df.drop_duplicates(inplace=True) # 删除重复行
排序
1
df.sort_values(by='Age', ascending=False) # 按照年龄降序排序(ascending=False降序)
分组操作
1
df.groupby('City')['Age'].mean() # 按照城市分组,计算每个城市的平均年龄
合并和连接数据
合并
1
2
3
4
5
6
7
8
9
10df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 4], 'Age': [25, 30, 35]})
merged_df = pd.merge(df1, df2, on='ID', how='inner') # 根据 ID 列进行合并
# on:指定根据哪些列来进行合并。它可以是单个列名或列名的列表。
# how:指定合并的方式(类似于 SQL 中的 JOIN 操作)。常见的选项有:
# 'inner':默认方式,取两个 DataFrame 中都有的匹配行。
# 'outer':返回两个 DataFrame 的所有行,不匹配的地方会用 NaN 填充。
# 'left':返回左侧 DataFrame 的所有行,并将右侧 DataFrame 中匹配的行附加上,不匹配的右侧数据为 NaN。
# 'right':返回右侧 DataFrame 的所有行,并将左侧 DataFrame 中匹配的行附加上,不匹配的左侧数据为 NaN。
print(merged_df)拼接
1
2
3
4
5df1 = pd.DataFrame({'Name': ['Alice'], 'Age': [25]})
df2 = pd.DataFrame({'Name': ['Bob'], 'Age': [30]})
concat_df = pd.concat([df1, df2], ignore_index=True) # 按行拼接
print(concat_df)
保存数据
1
2
3df.to_csv('output.csv', index=False) # 保存为 CSV 文件
df.to_excel('output.xlsx', index=False) # 保存为 Excel 文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 胡摆摆的Blog!
评论——本站支持或不登录(科学上网)或第三方登录(只有我能看到)
TwikooLivere