Pandas快问快答1-15题

如果你是一名使用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的pandassqlalchemy库。

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 数据库的函数。以下是该函数的一些常用参数:

  1. name:要写入的数据库表的名称。
  2. con:用于连接到数据库的连接对象。如果未提供,则函数将使用 SQLite 数据库,并将其存储在内存中。
  3. schema:数据库模式名称。如果未指定,则默认为 "public"。
  4. if_exists:如果指定的表已存在,则根据此参数的值执行相应操作。可选值有:
    • 'fail':抛出异常。
    • 'replace':替换现有表。
    • 'append':向现有表添加数据。
  5. index:是否将 DataFrame 的索引写入数据库表。默认为 True。如果设置为 False,则不会将索引写入表中。
  6. index_label:用作索引列的标签的列名。如果提供了 index=True,则可以使用此参数为索引列指定一个特定的标签名称。
  7. chunksize:将数据写入数据库的分块大小。如果提供,函数将返回一个迭代器,每次迭代写入一个分块。
  8. dtype:用于指定列的数据类型的字典。例如,{'a': sqlalchemy.types.String}
  9. method:用于将数据写入数据库的方法。默认为 None,表示使用标准 SQL 插入语句。如果设置为 multi,则允许批量插入多个值行。
  10. sql_schema:SQL 模式的名称,与 schema 参数类似,但使用 SQL 语法的模式名称。
  11. 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数据框的行有多种方法,以下是一些常见的方法:

  1. 使用布尔索引:通过在数据框上应用条件表达式,选择符合条件的行。例如,df[df['column_name'] > value]将选择column_name列中值大于value的所有行。
  2. 使用iloc[]:通过行号来选择行。例如,df.iloc[0:3]将选择前3行。
  3. 使用loc[]:通过行标签来选择行。例如,df.loc[row_label]将选择具有指定标签的行。
  4. 使用布尔索引和逻辑运算符:通过组合多个条件来选择行。例如,df[(df['column1'] > value1) & (df['column2'] < value2)]将选择同时满足两个条件的行。
  5. 使用query()方法:通过在数据框上应用字符串表达式来选择行。例如,df.query('column_name > value')将选择column_name列中值大于value的所有行。
  6. 使用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参数指定要计算的值列,indexcolumns参数指定分组的方式,aggfunc参数指定使用的聚合函数。在这个例子中,我们使用np.mean函数计算平均值。 

  • 95
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值