想要查看本系列的其他文章请到作者主页中。
学习提示:在有别的编程基础之上,学习Python很简单,只是语法不同,所以有很多新的语法记不住也没关系,不用专门耗时间死记,实战的时候现用现查就行。
下面的介绍中是每个部分最常用的语法,基本能够应付绝大多数的情况,如果希望学习更详细的内容,可以参考每个部分给出的资料链接。
AI闪电战:代码+实战 从Python速通到深度学习|数据处理与分析——Pandas1
1. 数据创建
1.1 创建空的DataFrame
内容引入:
Pandas库中的DataFrame是用于存储和处理表格数据的核心数据结构。在数据分析的最初阶段,通常会创建空的DataFrame,之后逐步添加数据或从文件中加载数据。这在动态构建数据时非常有用。
常用语法:
import pandas as pd
# 创建一个空的DataFrame
df_empty = pd.DataFrame()
# 查看空DataFrame
print(df_empty)
要点总结:
pd.DataFrame()
可以创建一个空的DataFrame。- 空的DataFrame没有任何数据行或列,显示时是空表。
练习:
- 创建一个空的DataFrame,并尝试添加一列名为
"Name"
的空列。
答案:
import pandas as pd
# 创建一个空的DataFrame
df_empty = pd.DataFrame()
# 添加一列名为 "Name" 的空列
df_empty['Name'] = []
print(df_empty)
更详细的知识点学习链接:
1.2 从字典创建DataFrame
内容引入:
从字典创建DataFrame是Pandas非常常见的操作之一,尤其适合将键值对的数据转换为表格形式。字典中的键会成为DataFrame的列名,而值则会成为相应列的数据。
常用语法:
import pandas as pd
# 从字典创建DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df_from_dict = pd.DataFrame(data)
# 查看DataFrame
print(df_from_dict)
要点总结:
- 使用字典创建DataFrame时,字典的键会成为列名,值为对应列的数据。
- 确保所有列长度一致,否则会抛出错误。
练习:
- 使用包含更多信息的字典来创建一个DataFrame,比如加入
Gender
列,并查看结果。
答案:
import pandas as pd
# 从包含更多信息的字典创建DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago'],
'Gender': ['Female', 'Male', 'Male']
}
df_from_dict = pd.DataFrame(data)
# 查看DataFrame
print(df_from_dict)
更详细的知识点学习链接:
1.3 从列表创建DataFrame
内容引入:
在许多情况下,我们会从列表数据中构建DataFrame,尤其是在处理二维数据时,例如矩阵或嵌套列表。列表中的每个元素通常代表DataFrame的一行数据。
常用语法:
import pandas as pd
# 从嵌套列表创建DataFrame
data = [
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
# 指定列名
columns = ['Name', 'Age', 'City']
df_from_list = pd.DataFrame(data, columns=columns)
# 查看DataFrame
print(df_from_list)
要点总结:
- 从列表创建DataFrame时,可以将每个子列表作为DataFrame的一行数据。
- 使用
columns
参数指定列名,否则会自动分配数值型索引。
练习:
- 创建一个包含
Name
、Score
列的DataFrame,数据来自嵌套列表。
答案:
import pandas as pd
# 从嵌套列表创建DataFrame
data = [
['Alice', 85],
['Bob', 90],
['Charlie', 95]
]
# 指定列名
columns = ['Name', 'Score']
df_from_list = pd.DataFrame(data, columns=columns)
# 查看DataFrame
print(df_from_list)
更详细的知识点学习链接:
1.4 从NumPy数组创建DataFrame
内容引入:
Pandas与NumPy库无缝结合,很多时候我们需要将NumPy数组转换为DataFrame进行进一步处理。尤其是当你用NumPy进行矩阵或数值运算时,将结果转换为DataFrame可以更方便地分析和处理数据。
常用语法:
import pandas as pd
import numpy as np
# 创建NumPy数组
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# 从NumPy数组创建DataFrame
df_from_array = pd.DataFrame(arr, columns=['A', 'B', 'C'])
# 查看DataFrame
print(df_from_array)
要点总结:
- NumPy数组与Pandas兼容,可以直接转换为DataFrame。
- 通过
columns
参数可以指定列名,若不指定则默认生成数值索引。
练习:
- 创建一个 2x3 的NumPy数组,并将其转换为DataFrame,同时为其指定列名
X
、Y
、Z
。
答案:
import pandas as pd
import numpy as np
# 创建2x3的NumPy数组
arr = np.array([
[10, 20, 30],
[40, 50, 60]
])
# 从NumPy数组创建DataFrame
df_from_array = pd.DataFrame(arr, columns=['X', 'Y', 'Z'])
# 查看DataFrame
print(df_from_array)
更详细的知识点学习链接:
Pandas官方文档: DataFrame从NumPy数组创建
1.5 要点总结
- 空DataFrame:可以使用
pd.DataFrame()
创建,并逐步添加数据。 - 从字典创建:字典的键作为列名,值作为列数据。
- 从列表创建:使用嵌套列表创建DataFrame,通常每个子列表代表一行数据。
- 从NumPy数组创建:NumPy数组可以直接转换为DataFrame,适合数值计算后的数据展示。
1.6 练习与答案
练习:
- 创建一个字典,包含
Product
和Price
两列,并使用该字典创建DataFrame。 - 从嵌套列表创建一个包含
City
、Population
的DataFrame。 - 创建一个NumPy数组表示 3x3 的矩阵,并将其转换为DataFrame,列名为
X1
、X2
、X3
。
答案:
import pandas as pd
import numpy as np
# 1. 从字典创建DataFrame
data = {'Product': ['Apple', 'Banana', 'Orange'], 'Price': [1.2, 0.5, 0.8]}
df1 = pd.DataFrame(data)
print(df1)
# 2. 从嵌套列表创建DataFrame
data = [['New York', 8419600], ['Los Angeles', 3980400], ['Chicago', 2716000]]
df2 = pd.DataFrame(data, columns=['City', 'Population'])
print(df2)
# 3. 从NumPy数组创建DataFrame
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df3 = pd.DataFrame(arr, columns=['X1', 'X2', 'X3'])
print(df3)
1.7 更详细的知识点学习链接
好的!我们接下来完善 2. 数据类型 这一部分,每个小节都会包含内容引入、常用语法、要点总结、练习与答案以及更详细的知识点学习链接。所有代码示例都包含独立数据和导入库。
2. 数据类型
2.1 内容引入:
在数据分析过程中,不同的列通常具有不同的数据类型,如整型、浮点型、字符串、日期等。正确识别和处理这些数据类型,对于分析、计算和数据处理非常重要。Pandas 提供了丰富的函数用于检查、转换和处理数据类型,帮助我们更好地管理数据。
2.2 常用语法
2.2.1 检查数据类型
内容引入:
当我们加载数据或创建DataFrame时,了解每一列的数据类型是很重要的。Pandas 提供了 dtypes
属性用于查看每列的数据类型。
常用语法:
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [88.5, 92.0, 79.5]
}
df = pd.DataFrame(data)
# 检查DataFrame每一列的数据类型
print(df.dtypes)
要点总结:
dtypes
属性可以用来查看DataFrame中每列的具体数据类型,如int64
、float64
、object
(字符串)。- Pandas中的
object
数据类型通常表示字符串或混合类型。
练习:
- 创建一个包含日期、字符串、整数列的DataFrame,并检查各列的数据类型。
答案:
import pandas as pd
# 创建一个包含不同类型数据的DataFrame
data = {
'Date': pd.to_datetime(['2023-01-01', '2023-01-02', '2023-01-03']),
'City': ['New York', 'Los Angeles', 'Chicago'],
'Population': [8419600, 3980400, 2716000]
}
df = pd.DataFrame(data)
# 检查每一列的数据类型
print(df.dtypes)
特别说明
pd.to_datetime 主要用于将字符串、列表、元组、字典、Series 或 DataFrame 中的日期时间数据转换为 datetime64[ns] 类型。datetime64[ns] 是 Pandas 中用于表示日期时间的标准数据类型,具有高精度和丰富的日期时间操作功能。
更详细的知识点学习链接:
2.2.2 转换数据类型
内容引入:
有时我们可能需要将一列的数据类型从一种类型转换为另一种,比如将字符串转换为数值,或将整数转换为浮点型。这在进行数值计算或进行数据清洗时非常常见。
常用语法:
import pandas as pd
# 创建一个示例DataFrame
data = {
'ID': ['001', '002', '003'],
'Price': ['10.5', '20.0', '15.75']
}
df = pd.DataFrame(data)
# 将 "Price" 列从字符串转换为浮点型
df['Price'] = df['Price'].astype(float)
# 查看转换后的数据类型
print(df.dtypes)
要点总结:
astype()
方法可以用来转换数据类型。- 常见转换包括将字符串转换为数值型 (
int
或float
),或者将数值型转换为字符串。 - 在进行转换前,确保数据格式正确,否则可能会引发错误。
练习:
- 将包含日期的字符串列转换为
datetime
类型。
答案:
import pandas as pd
# 创建一个包含日期字符串的DataFrame
data = {
'Event': ['Launch', 'Meeting', 'Conference'],
'Date': ['2024-01-01', '2024-02-15', '2024-03-10']
}
df = pd.DataFrame(data)
# 将 "Date" 列转换为 datetime 类型
df['Date'] = pd.to_datetime(df['Date'])
# 查看转换后的数据类型
print(df.dtypes)
更详细的知识点学习链接:
2.2.3 查看特定列的数据类型
内容引入:
有时我们只需要检查某一列的数据类型,而不需要查看整个DataFrame。这可以通过访问列后使用 dtype
属性来实现。
常用语法:
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [88.5, 92.0, 79.5]
}
df = pd.DataFrame(data)
# 查看特定列的数据类型
print(df['Age'].dtype)
要点总结:
- 通过
df['column_name'].dtype
可以检查某一特定列的数据类型。 - 这在你只关心某列数据类型时非常有用,而不需要查看整个DataFrame的类型信息。
练习:
- 创建一个包含三个不同数据类型列的DataFrame,并检查某一特定列的数据类型。
答案:
import pandas as pd
# 创建一个包含不同数据类型的DataFrame
data = {
'City': ['New York', 'Los Angeles', 'Chicago'],
'Established': [1624, 1781, 1833],
'Is_Metropolis': [True, True, True]
}
df = pd.DataFrame(data)
# 查看 "Established" 列的数据类型
print(df['Established'].dtype)
更详细的知识点学习链接:
2.3 要点总结
- 检查数据类型:使用
dtypes
可以查看DataFrame中每一列的数据类型。 - 转换数据类型:使用
astype()
可以将列的数据类型转换为其他类型,如int
、float
或datetime
。 - 查看特定列的数据类型:可以使用
df['column_name'].dtype
查看某一列的具体数据类型。
2.4 练习与答案
练习:
- 创建一个包含整数、浮点数和字符串列的DataFrame,并使用
dtypes
检查其数据类型。 - 将一个包含数字字符串的列转换为数值类型。
- 创建一个DataFrame,包含时间列并将其转换为
datetime
类型。
答案:
import pandas as pd
# 1. 创建包含整数、浮点数和字符串列的DataFrame
data = {
'ID': [1, 2, 3],
'Height': [5.7, 6.0, 5.8],
'Name': ['Alice', 'Bob', 'Charlie']
}
df = pd.DataFrame(data)
print(df.dtypes)
# 2. 将数字字符串转换为数值类型
data = {
'ID': ['001', '002', '003'],
'Price': ['12.5', '15.0', '10.75']
}
df = pd.DataFrame(data)
df['Price'] = df['Price'].astype(float)
print(df.dtypes)
# 3. 创建包含时间列的DataFrame并转换为 datetime 类型
data = {
'Event': ['Launch', 'Meeting', 'Conference'],
'Date': ['2024-01-01', '2024-02-15', '2024-03-10']
}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])
print(df.dtypes)
2.5 更详细的知识点学习链接
3. 数据读取与写入
3.1 从CSV, Excel读取数据
内容引入:
在数据分析中,我们经常需要从外部文件中读取数据,比如CSV文件和Excel文件。Pandas 提供了简单的方法来读取这类数据并将其加载为DataFrame。
常用语法:
import pandas as pd
# 从CSV文件读取数据
df_csv = pd.read_csv('example.csv')
# 从Excel文件读取数据
df_excel = pd.read_excel('example.xlsx')
# 查看数据前5行
print(df_csv.head())
print(df_excel.head())
要点总结:
pd.read_csv()
用于读取CSV文件,并将其转换为DataFrame。pd.read_excel()
用于读取Excel文件。需要安装openpyxl
或xlrd
库支持Excel文件读取。head()
方法可以用于查看DataFrame的前几行数据,默认为前5行。
练习:
- 创建一个CSV和一个Excel文件,分别使用
pd.read_csv()
和pd.read_excel()
读取文件中的数据,并查看前几行。
答案:
import pandas as pd
# 读取CSV文件
df_csv = pd.read_csv('data.csv')
print(df_csv.head())
# 读取Excel文件
df_excel = pd.read_excel('data.xlsx')
print(df_excel.head())
更详细的知识点学习链接:
3.2 将数据写入CSV, Excel文件
内容引入:
数据处理和分析完成后,通常我们需要将结果保存为文件以供后续使用。Pandas 提供了 to_csv()
和 to_excel()
方法,用于将DataFrame数据写入CSV或Excel文件。
常用语法:
import pandas as pd
# 创建示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [88.5, 92.0, 79.5]
}
df = pd.DataFrame(data)
# 将DataFrame写入CSV文件
df.to_csv('output.csv', index=False)
# 将DataFrame写入Excel文件
df.to_excel('output.xlsx', index=False)
print("数据已保存到文件中。")
要点总结:
to_csv()
方法可以将DataFrame数据写入CSV文件。参数index=False
用于避免将索引写入文件。to_excel()
方法用于将DataFrame写入Excel文件。使用此方法前确保安装openpyxl
库。
练习:
- 创建一个包含名字、分数和年龄的DataFrame,并将其写入一个CSV和一个Excel文件中。
答案:
import pandas as pd
# 创建示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [88.5, 92.0, 79.5]
}
df = pd.DataFrame(data)
# 写入CSV文件
df.to_csv('students.csv', index=False)
# 写入Excel文件
df.to_excel('students.xlsx', index=False)
print("数据已成功写入CSV和Excel文件中。")
更详细的知识点学习链接:
3.3 处理不同格式的数据文件(如JSON等)
内容引入:
除了CSV和Excel文件,Pandas 还能处理许多其他数据文件格式,如JSON、HTML等。这为数据的灵活处理提供了更多选择。
常用语法:
import pandas as pd
# 从JSON文件读取数据
df_json = pd.read_json('example.json')
# 查看DataFrame
print(df_json.head())
# 将DataFrame写入JSON文件
df_json.to_json('output.json', orient='records', lines=True)
print("数据已保存为JSON文件。")
要点总结:
pd.read_json()
用于从JSON文件中读取数据并转换为DataFrame。to_json()
可以将DataFrame写入JSON文件。参数orient
和lines
可以用来调整输出格式。
练习:
- 从一个JSON文件中读取数据,并将其转换为DataFrame。然后将DataFrame写入另一个JSON文件。
答案:
import pandas as pd
# 读取JSON文件
df = pd.read_json('data.json')
print(df.head())
# 写入新的JSON文件
df.to_json('output.json', orient='records', lines=True)
print("数据已成功保存为JSON文件。")
更详细的知识点学习链接:
3.4 要点总结
- 读取数据:
pd.read_csv()
和pd.read_excel()
分别用于从CSV和Excel文件中读取数据。pd.read_json()
可以读取JSON文件。 - 写入数据:
to_csv()
和to_excel()
分别用于将数据写入CSV和Excel文件。to_json()
用于保存JSON格式数据。 - 文件处理灵活性:Pandas 支持多种数据文件格式的读写操作,包括CSV、Excel、JSON等,方便数据的导入与导出。
3.5 练习与答案
练习:
- 从一个CSV文件中读取数据,并将其保存为一个新的CSV文件。
- 从一个Excel文件中读取数据,并将其保存为一个新的Excel文件。
- 读取一个JSON文件的数据,并将其写入一个新的JSON文件中。
答案:
import pandas as pd
# 1. 从CSV文件读取并写入新CSV文件
df_csv = pd.read_csv('input.csv')
df_csv.to_csv('output.csv', index=False)
# 2. 从Excel文件读取并写入新Excel文件
df_excel = pd.read_excel('input.xlsx')
df_excel.to_excel('output.xlsx', index=False)
# 3. 从JSON文件读取并写入新JSON文件
df_json = pd.read_json('input.json')
df_json.to_json('output.json', orient='records', lines=True)
print("数据已成功读取并保存到新文件中。")
3.6 更详细的知识点学习链接
- Pandas官方文档: read_csv
- Pandas官方文档: read_excel
- Pandas官方文档: read_json
- Pandas官方文档: to_csv
- Pandas官方文档: to_excel
- Pandas官方文档: to_json
问题解答
由于本系列是基础教程,所以有任何问题基本上国内免费的AI模型都能回答,有任何疑问或Bug可以寻求以下免费的大模型的解答。
- 豆包:https://www.doubao.com/chat/
- 文心一言:https://yiyan.baidu.com/
- 通义千问:https://tongyi.aliyun.com/qianwen/
- 讯飞星火:https://xinghuo.xfyun.cn/desk
如果觉得有帮助的话,求 关注、收藏、点赞、星星 哦!