如果你是一名使用python进行过数据处理的程序员,那你对Pandas必然不陌生。pandas是一个开源的第三方Python库,旨在提供快速、灵活和富有表现力的数据结构,以便能够简单、直观地处理关系型和标记型数据。它的名字来源于面板数据(Panel Data)和数据分析(data analysis)这两个名词的组合。
Pandas最初被应用于金融量化交易领域,现在它的应用领域更加广泛,涵盖了农业、工业、交通等许多行业。它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法,是Python数据分析实践与实战的必备高级工具。
此外,Pandas是基于NumPy和Matplotlib开发的,与这两个库一起构成了Python数据分析的基础工具程序包,被誉为Python数据分析“三剑客”之一。Pandas也是Python中统计计算生态系统的重要组成部分,因为它依赖于statsmodels库。
那么今天,我们就来总结一下pandas最常见的100种用法,相信你学会了这100个pandas的使用,你也是 “不会作诗也会吟”了。
1.如何使用pandas将一个列表转换为数据框?
要将一个列表转换为Pandas数据框(DataFrame),你可以使用Pandas的DataFrame
函数。以下是一个简单的示例:
import pandas as pd # 示例列表
list_data = [ ['Tom', 10, 'M'], ['Nick', 15, 'F'], ['John', 20, 'M'], ['Peter', 25, 'M']
] # 将列表转换为数据框
df = pd.DataFrame(list_data, columns=['Name', 'Age', 'Gender']) # 显示数据框
print(df)
在这个例子中,我们首先导入Pandas库并给它起了一个别名pd
。然后,我们定义了一个包含数据的列表。接下来,我们使用pd.DataFrame()
函数将列表转换为数据框,并使用columns
参数指定列的名称。最后,我们打印数据框的内容。
2. 如何从一个csv文件中读取数据到一个pandas数据框?
要将CSV文件的数据读取到Pandas DataFrame中,你可以使用Pandas的read_csv
函数。以下是一个简单的示例:
import pandas as pd # 读取CSV文件到DataFrame
df = pd.read_csv('filename.csv') # 显示前5行数据
print(df.head())
这段代码会从当前目录下的'filename.csv'文件中读取数据,并将其存储在DataFrame对象df中。然后,它会打印出这个DataFrame的前五行。read_csv
函数有许多参数,可以用来调整如何读取CSV文件。例如,你可以指定分隔符,处理空值,或者读取特定的列。以下是一些常见的参数:
sep
:指定分隔符,默认为','。delimiter
:同sep
。header
:指定标题行,默认为0。如果CSV文件没有标题行,则设置为None。index_col
:指定用作索引的列。usecols
:只读取指定的列。可以是一个列名列表,或者是一个布尔数组。skiprows
:跳过指定的行数。na_values
:指定应被视为空值的值。dtype
:为每个列设置数据类型。parse_dates
:将日期列解析为日期类型。skipfooter
:跳过CSV文件末尾的指定行数。encoding
:指定编码方式。
3.如何通过pandas创建数据到mysql数据库?
要将Pandas数据框中的数据写入MySQL数据库,您需要使用Python的pandas
和sqlalchemy
库。
import pandas as pd
from sqlalchemy import create_engine # 创建示例数据框
data = { 'Name': ['Tom', 'Nick', 'John', 'Peter'], 'Age': [10, 15, 20, 25], 'Gender': ['M', 'F', 'M', 'M']
}
df = pd.DataFrame(data) # 创建数据库连接字符串,根据实际情况修改以下参数
username = 'your_username'
password = 'your_password'
host = 'your_host'
database = 'your_database'
url = f"mysql+pymysql://{username}:{password}@{host}/{database}" # 创建数据库连接引擎
engine = create_engine(url) # 将数据写入MySQL数据库表(如果表已存在,则替换它)
df.to_sql('table_name', con=engine, if_exists='replace', index=False) # 'table_name'是您要将数据写入的目标表的名称,'replace'表示如果表已存在,则替换它。
df.to_sql()
函数是 pandas 库中用于将数据框(DataFrame)写入 SQL 数据库的函数。以下是该函数的一些常用参数:
- name:要写入的数据库表的名称。
- con:用于连接到数据库的连接对象。如果未提供,则函数将使用 SQLite 数据库,并将其存储在内存中。
- schema:数据库模式名称。如果未指定,则默认为 "public"。
- if_exists:如果指定的表已存在,则根据此参数的值执行相应操作。可选值有:
'fail'
:抛出异常。'replace'
:替换现有表。'append'
:向现有表添加数据。
- index:是否将 DataFrame 的索引写入数据库表。默认为
True
。如果设置为False
,则不会将索引写入表中。 - index_label:用作索引列的标签的列名。如果提供了
index=True
,则可以使用此参数为索引列指定一个特定的标签名称。 - chunksize:将数据写入数据库的分块大小。如果提供,函数将返回一个迭代器,每次迭代写入一个分块。
- dtype:用于指定列的数据类型的字典。例如,
{'a': sqlalchemy.types.String}
。 - method:用于将数据写入数据库的方法。默认为
None
,表示使用标准 SQL 插入语句。如果设置为multi
,则允许批量插入多个值行。 - sql_schema:SQL 模式的名称,与
schema
参数类似,但使用 SQL 语法的模式名称。 - kwargs:其他关键字参数将被传递给
pd.io.sql.get_schema()
函数来生成 SQL 创建表语句。
4.如何查看一个pandas数据框的行数和列数?
len(df)获取行数
len(df.columns)获取列数
5. 如何查看一个pandas数据库的列名?
df.columns
6. 如何查看一个pandas数据框的索引?
df.index
7. 如何导入pandas库并查看版本号?
pd.__version__
8. 如何从csv文件中读取数据并创建一个pandas数据框?
# 读取CSV文件
df = pd.read_csv('file.csv')
9. 如何查看一个pandas数据框的数据类型?
df.dtypes
10. 如何查看一个pandas数据框的数据摘要统计信息?
# 使用describe()函数查看数据摘要统计信息
df.describe()# 特定的列描述统计
df['A'].describe()# 显示包括标准差、方差、最小值、四分位数和最大值的更详细的信息。
df.describe(include='all')
11. 如何选择一个Pandas数据框的行?
选择Pandas数据框的行有多种方法,以下是一些常见的方法:
- 使用布尔索引:通过在数据框上应用条件表达式,选择符合条件的行。例如,
df[df['column_name'] > value]
将选择column_name
列中值大于value
的所有行。 - 使用iloc[]:通过行号来选择行。例如,
df.iloc[0:3]
将选择前3行。 - 使用loc[]:通过行标签来选择行。例如,
df.loc[row_label]
将选择具有指定标签的行。 - 使用布尔索引和逻辑运算符:通过组合多个条件来选择行。例如,
df[(df['column1'] > value1) & (df['column2'] < value2)]
将选择同时满足两个条件的行。 - 使用query()方法:通过在数据框上应用字符串表达式来选择行。例如,
df.query('column_name > value')
将选择column_name
列中值大于value
的所有行。 - 使用isin()方法:通过指定一个值列表,选择包含该列表中任意值的行。例如,
df[df['column_name'].isin(value_list)]
将选择column_name
列中值在value_list
列表中的所有行。
12. 如何选择一个Pandas数据框的列?
在Pandas中,您可以使用各种方法选择数据框(DataFrame)的列。以下是一些常用的方法:
- 通过列名选择列:使用列名作为索引来选择特定的列。
df['column_name']
- 通过列的位置选择列:使用列的整数位置(从0开始)来选择列。
df.iloc[:, position]
- 选择多个列:使用列名的列表来选择多个列。
df[['column1', 'column2']]
- 选择列的一部分:使用布尔索引选择满足条件的列。例如,选择所有大于某个值的列。
df[df['column_name'] > value]
- 选择所有列:要选择所有列,可以使用以下方法。
df.all() # 对于所有True的情况返回True,否则返回False。也可以用于布尔索引。
- 选择非空值的列:使用
dropna()
函数来选择非空值的列。
df.dropna(axis='columns') # 返回一个只包含非空值列的新数据框。
13. 如何根据某一列的值对一个Pandas数据框进行排序?
# 升序排序
sorted_df = df.sort_values(by='column_name')# 降序排序
sorted_df = df.sort_values(by='column_name', ascending=False)# 先按column_name1列升序排序,然后按column_name2列降序排序
sorted_df = df.sort_values(by=['column_name1', 'column_name2'], ascending=[True, False])
15. 如何对一个Pandas数据框进行透视操作?
透视操作是一种对数据进行动态排布并且分类汇总的表格格式。它可以根据一个或多个键值对数据进行聚合,根据列或行的分组键将数据划分到各个区域。在数据分析中,透视操作是一种非常常用的工具,可以帮助用户快速地整理和呈现数据,发现数据的内在规律和趋势。
Pandas提供了pivot_table()
函数,可以对数据框进行透视操作。
import pandas as pd
import numpy as np# 创建一个简单的数据框
df = pd.DataFrame({'A': ['foo', 'foo', 'foo', 'foo', 'foo','bar', 'bar', 'bar', 'bar'],'B': ['one', 'one', 'one', 'two', 'two','one', 'one', 'two', 'two'],'C': ['small', 'large', 'large', 'small','small', 'large', 'small', 'small','large'],'D': [1, 2, 2, 3, 3, 4, 5, 6, 7],'E': [2, 4, 5, 5, 6, 6, 8, 9, 9]
})# 对数据框进行透视操作,按照列 A、B、C 进行分组,计算 D 和 E 的平均值
pivot_table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'B'], columns=['C'], aggfunc=np.mean)print(pivot_table)
values
参数指定要计算的值列,index
和columns
参数指定分组的方式,aggfunc
参数指定使用的聚合函数。在这个例子中,我们使用np.mean
函数计算平均值。