Fork me on GitHub

10分钟快速入门Pandas

10分钟快速入门Pandas

本文通过介绍一个简单的案例来带领大家快速上手Pandas。

导入库

1
2
3
4
5
import pandas as pd  # 惯例方式
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

读取本地csv文件

1
2
df = pd.read_csv("Titanic.csv")
df

数据大小

shape属性能够查看数据大小,返回的是一个元组:第一个元素值行记录数,第二个是字段个数

In [3]:

1
df.shape

Out[3]:

1
(891, 12)

查看头尾文件

  • head:默认是前5条
  • tail:默认是尾部5条

基本信息

In [6]:

1
df.dtypes

Out[6]:

1
2
3
4
5
6
7
8
9
10
11
12
13
PassengerId      int64
Survived int64
Pclass int64
Name object
Sex object
Age float64
SibSp int64
Parch int64
Ticket object
Fare float64
Cabin object
Embarked object
dtype: object

In [7]:

1
df.index

Out[7]:

1
RangeIndex(start=0, stop=891, step=1)

In [8]:

1
df.columns

Out[8]:

1
2
3
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
dtype='object')

选择数据

1
2
3
4
5
6
7
8
df.iloc[2:5,1:4]  # 切片选择
df.loc[2:5,"Pclass"] # 切片 + 属性
df["Age"] # 指定字段,单个字段得到Series数据
df[["Age","Pclass"]] # 多个字段得到DataFrame
df.select_dtypes(include=["float","int"]) # 根据字段类型选择
df[df.Age > 36].head(3) # 根据关系选择
df[df["Name"].str.contains("Miss")] # 根据文本关系选择
df[(df["Sex"] == "male") & (df["Parch"] == 0)] # 多个筛选条件

排序

In [15]:

1
df.sort_values("Fare").head()  # 默认升序

Out[15]:

下面改成了降序的形式:

缺失值情况

In [17]:

1
df.isnull().sum()  # 删除前

Out[17]:

1
2
3
4
5
6
7
8
9
10
11
12
13
PassengerId      0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64

In [18]:

1
df.dropna(inplace=True)  # 删除缺失值

In [19]:

1
df.isnull().sum()  # 删除后

Out[19]:

1
2
3
4
5
6
7
8
9
10
11
12
13
PassengerId    0
Survived 0
Pclass 0
Name 0
Sex 0
Age 0
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 0 # 没有缺失值
Embarked 0
dtype: int64

分组统计

In [20]:

1
2
df1 = df.groupby("Sex").agg({ "Name":"nunique", "Age":np.mean, "Fare":"sum"})
df1

转置功能

Pandas中有两种方式实现转置:

  • T
  • transpose

apply函数

In [22]:

1
df["Sex"].value_counts()

Out[22]:

1
2
3
male      95
female 88
Name: Sex, dtype: int64

In [23]:

1
2
3
# 将male变成0,female变成1

df["Sex"] = df["Sex"].apply(lambda x: 0 if x == "male" else 1)

In [24]:

1
df["Sex"].value_counts()

Out[24]:

1
2
3
0    95
1 88
Name: Sex, dtype: int64

可视化

In [25]:

1
2
plt.bar(df["Embarked"], df["Fare"])
plt.show()

1
2
sns.pairplot(df[["Sex","Age","Fare"]])
plt.show()

数据输出

1
2
3
df.to_csv("new_data.csv",index=False)  # 保存到csv文件
df.to_excel("new_data.xlsx",index=False) # 保存到Excel文件
df.to_json("new_data.json",index=False) # 保存成json文件

本文标题:10分钟快速入门Pandas

发布时间:2022年03月25日 - 21:03

原始链接:http://www.renpeter.cn/2022/03/25/10%E5%88%86%E9%92%9F%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8Pandas.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea