Pandas使用技巧

这篇具有很好参考价值的文章主要介绍了Pandas使用技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pandas 是一个强大的数据分析 Python 库,提供了一系列用于数据清洗、转换、分析和可视化的 API。在使用 Pandas 进行数据处理时,常见的指令包括:

  1. 数据读取和解析

read_csv():用于读取 CSV、Excel等格式的数据文件,并将其转换为 Pandas DataFrame 对象。

import pandas as pd  
  
# 读取 CSV 文件为 DataFrame  
df = pd.read_csv('data.csv')  
  
# 打印 DataFrame  
print(df)

read_excel():用于读取 Excel 文件,并将其转换为 Pandas DataFrame 对象。

  1. 利用pandas读取Excel多个表单

import pandas as pd
# 指定文件
excel_reader=pd.ExcelFile('文件.xlsx')  
# 读取文件的所有表单名,得到列表
sheet_names = excel_reader.sheet_names  
# 读取表单的内容,i是表单名的索引,等价于
# pd.read_excel('文件.xlsx', sheet_name=sheet_names[i]) 
df_data =  excel_reader.parse(sheet_name=sheet_names[i])

# 关闭reader
excel_reader.close()
  1. 利用pandas写入Excel多个sheet表单

import pandas as pd
# 定义writer,选择文件(文件可以不存在)
excel_writer = pd.ExcelWriter('文件.xlsx')  
# 写入指定表单
df1.to_excel(excel_writer, sheet_name='自定义sheet_name1', index=False)
df2.to_excel(excel_writer, sheet_name='自定义sheet_name2', index=False)   
# 储存文件
excel_writer.save()  
# 关闭writer
excel_writer.close()  

read_json():用于读取 JSON 格式的数据文件,并将其转换为 Pandas DataFrame 对象。

import pandas as pd  
from json import load  
  
# 加载 JSON 文件为 DataFrame,注意需要使用 load() 函数而不是 from json import load()  
df = pd.read_json('data.json', lines=True, dtype={'Name': str})
  1. 数据转换和筛选

  • apply():用于将指定函数应用于每行数据,返回一个包含结果的新数组。

函数功能展示:

# 定义一个函数,将每个元素加倍
def double(x):
    return x * 2

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# 将函数应用于每个元素
df['C'] = df['A'].apply(double)
print(df)

结果输出:

   A   B   C
0  1  10   2
1  2  20   4
2  3  30   6
3  4  40   8
4  5  50  10
  • agg():用于对数据进行聚合操作,例如求平均值、总和等。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# 对列A求平均值和总和
result = df['A'].agg(['mean', 'sum'])
print(result)

结果输出:

mean    3.0
sum    15.0
Name: A, dtype: float64
  • groupby():用于根据某个字段对数据进行分组,返回每组的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily', 'John'],
        'Age': [25, 30, 35, 40, 45],
        'City': ['New York', 'Paris', 'London', 'Paris', 'New York']}
df = pd.DataFrame(data)

# 根据City字段进行分组,并计算每组的平均年龄
result = df.groupby('City')['Age'].mean()
print(result)

结果输出:

City
London      35
New York    35
Paris       35
Name: Age, dtype: int64
  • head():用于获取数据开头的一部分数据。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 获取前3行数据
result = df.head(3)
print(result)

结果输出:

   A
0  1
1  2
2  3
  • tail():用于获取数据末尾的一部分数据。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 获取最后3行数据
result = df.tail(3)
print(result)

结果输出:

   A
2  3
3  4
4  5
  1. 数据排序和过滤

  • sort_values():用于按照指定列对数据进行排序。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily'],
        'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)

# 按照Age列进行升序排序
df_sorted = df.sort_values('Age')
print(df_sorted)

结果输出:

   Name  Age
0  John   25
1  Jane   30
2  Mike   35
3  Emily  40
  • drop_duplicates():用于删除数据中重复的行,返回唯一的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily', 'John'],
        'Age': [25, 30, 35, 40, 25]}
df = pd.DataFrame(data)

# 删除重复的行
df_unique = df.drop_duplicates()
print(df_unique)

结果输出:

   Name  Age
0  John   25
1  Jane   30
2  Mike   35
3  Emily  40
  • dropna():用于删除数据中符合条件的行,返回符合条件的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', np.nan, 'Emily'],
        'Age': [25, np.nan, 35, 40]}
df = pd.DataFrame(data)

# 删除包含缺失值的行
df = df.dropna()
print(df)

结果输出:

   Name   Age
0  John  25.0
2  Emily  35.0
  1. 数据汇总和连接

  • join():用于将多个数据集合并成一个数据集。可以通过指定两个或更多的函数将两个数据集合并为一个新的数据集。

函数功能展示:

# 创建两个DataFrame
data1 = {'Name': ['John', 'Jane', 'Mike'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['Emily', 'Tom', 'Kate'],
         'City': ['New York', 'Paris', 'London']}
df2 = pd.DataFrame(data2)

# 使用join()函数将两个DataFrame按照Name列进行合并
df_merged = df1.join(df2.set_index('Name'), on='Name')
print(df_merged)

结果输出:

   Name  Age      City
0  John   25       NaN
1  Jane   30       NaN
2  Mike   35       NaN
  • merge():用于将两个或多个数据集合并成一个新的数据集。可以通过指定多个函数将两个或多个数据集合并为一个新的数据集。

函数功能展示:

# 创建两个DataFrame
data1 = {'Name': ['John', 'Jane', 'Mike'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['Emily', 'Tom', 'Kate'],
         'City': ['New York', 'Paris', 'London']}
df2 = pd.DataFrame(data2)

# 使用merge()函数将两个DataFrame按照Name列进行合并
df_merged = pd.merge(df1, df2, on='Name')
print(df_merged)

结果输出:

   Name  Age      City
0  John   25  New York
1  Jane   30       NaN
2  Mike   35       NaN

需要注意的是,join()和merge()函数默认进行左连接(left join),即保留左边DataFrame的所有行,并根据指定的列进行合并。如果需要其他类型的连接(如内连接、外连接等),可以通过指定how参数来实现。例如,使用merge()函数进行内连接:

df_merged = pd.merge(df1, df2, on='Name', how='inner')

还可以通过指定left_on和right_on参数来连接不同列名的DataFrame。

  1. 多维分析

pivot_table():用于将数据转换为表格形式,方便进行多维分析。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'John', 'Jane', 'John', 'Jane'],
        'Subject': ['Math', 'Math', 'Science', 'Science', 'Math', 'Science'],
        'Score': [80, 90, 85, 95, 75, 80]}
df = pd.DataFrame(data)

# 使用pivot_table()函数进行数据透视
pivot_table = df.pivot_table(index='Name', columns='Subject', values='Score', aggfunc='mean')
print(pivot_table)

结果输出:

Subject  Math  Science
Name                  
Jane     90.0     87.5
John     77.5     85.0

在上述示例中,我们通过指定index='Name'将姓名作为行索引,columns='Subject'将科目作为列索引,values='Score'将成绩作为要汇总的值,aggfunc='mean'指定了聚合函数为平均值。

pivot_table()函数根据指定的行、列和值对数据进行汇总和计算,生成了一个新的表格,其中行是姓名,列是科目,值是对应的平均分。这样,我们可以方便地进行多维分析,比如查看不同学生在不同科目上的平均分。

除了平均值,aggfunc参数还可以指定其他聚合函数,比如'sum'、'count'、'min'、'max'等,根据具体需求进行设置。

  1. 数据可视化

plot():用于绘制各种类型的图表,如柱状图、折线图、散点图等。它基于Matplotlib库,可以直接在Pandas中进行调用。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Year': [2017, 2018, 2019, 2020],
        'Sales': [100, 150, 200, 180]}
df = pd.DataFrame(data)

# 绘制柱状图
df.plot(x='Year', y='Sales', kind='bar')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales by Year')
plt.show()

输出结果是一个柱状图,横轴是年份,纵轴是销售额。在这个示例中,我们通过指定x='Year'y='Sales'来选择要绘制的数据列,然后指定kind='bar'来绘制柱状图。

结果输出:

Pandas使用技巧
# 绘制折线图
df.plot(x='Year', y='Sales', kind='line')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales by Year')
plt.show()

输出结果:

Pandas使用技巧

hist():Pandas中用于绘制直方图的函数。直方图是一种可视化工具,用于显示数据的分布情况,特别适用于连续变量的数据。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Scores': [70, 85, 90, 75, 80, 95, 85, 90, 80, 85]}
df = pd.DataFrame(data)

# 绘制直方图
df.hist(column='Scores', bins=5)
plt.xlabel('Score')
plt.ylabel('Frequency')
plt.title('Score Distribution')
plt.show()

通过指定column='Scores'选择要绘制直方图的数据列,bins=5指定直方图的分组数量。这样,直方图将数据分成了5个组,横轴是分数,纵轴是频数(数据在每个组中出现的次数)。

结果输出:

Pandas使用技巧

boxplot():Pandas中用于绘制箱线图的函数。箱线图是一种可视化工具,用于展示数据的分布情况和离群值。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
        'Values': [10, 15, 20, 25, 30, 35]}
df = pd.DataFrame(data)

# 绘制箱线图
df.boxplot(column='Values', by='Group')
plt.xlabel('Group')
plt.ylabel('Values')
plt.title('Boxplot')
plt.show()

通过指定column='Values'选择要绘制箱线图的数据列,by='Group'指定了分组的列。这样,箱线图将数据按照不同的组进行分组,横轴是组别,纵轴是数值。

在绘制箱线图之前,需要先导入pandasmatplotlib.pyplot库。然后,使用boxplot()函数绘制箱线图,并使用xlabel()ylabel()title()函数设置坐标轴标签和图表标题。

箱线图展示了数据的五个统计量:最小值(lower whisker)、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)、最大值(upper whisker)。箱体表示了Q1到Q3之间的数据范围,中间的线表示中位数。离群值(outliers)通常以圆圈或叉形表示。

需要注意的是,boxplot()函数也可以接受其他参数来定制箱线图的样式,如设置颜色、填充颜色、须的长度等。根据需求,可以选择合适的参数进行设置。另外,boxplot()函数也支持同时绘制多个箱线图,比如按照不同的列进行分组。

结果输出:

Pandas使用技巧
  1. 数据处理和优化

groupby()agg() 函数结合使用,可以对同一列或同一行进行聚合操作,减少内存占用。

Pandas 的 lr=True 参数可以自动学习数据重分配策略,减少内存占用。

Pandas 提供了一些优化技巧,例如使用 rolling() 函数计算滚动窗口中的平均值等。

了上述指令外,Pandas 还有许多其他常见的指令,如:

  1. describe():用于查看数据的统计信息,例如均值、方差、标准差等。

  1. groupby()agg() 函数配合使用,可以对数据按照某个字段进行分组,并对每组数据进行聚合操作。

  1. rolling() 函数可以计算滚动窗口中的平均值,减少内存占用。

  1. drop_duplicates() 函数可以删除重复的行,并返回唯一的数据。

  1. tail() 函数可以获取数据末尾的一部分数据,方便进行数据分析。

使用 Pandas 进行数据处理时,还需要注意以下几点:

  1. 注意处理缺失值:Pandas 可以通过缺失值处理函数(如 fillna())来处理缺失值,但是在进行聚合操作时,缺失值可能会对结果产生影响。因此,需要根据具体情况选择合适的处理方法。

  1. 注意数据类型:Pandas 支持多种数据类型,包括 int、float、str、Series、DataFrame 等。在进行数据处理时,需要根据数据类型选择合适的函数和指令。

  1. 注意索引:Pandas 对于多维数据集(如矩阵)非常有用,但是索引也会影响数据处理效率。因此,需要合理地设置索引,并注意索引的类型和数量。

  1. 注意异常值:Pandas 对于异常值非常敏感,如果数据中存在异常值,可能会导致程序崩溃或产生不正确的结果。因此,需要注意异常值的处理和输出。

  1. 注意性能:在进行大规模数据处理时,需要注意 Pandas 的性能问题。可以通过调整参数(如缓冲区大小、分区方式等)来提高程序的性能。

总之,使用 Pandas 进行数据处理需要熟悉其指令和技巧,并注意处理数据中的各种问题,才能得到准确、高效的结果。

除了数据处理外,Pandas 还可以用于数据挖掘、机器学习等领域。以下是一些 Pandas 在数据挖掘和机器学习中的应用:

  1. 分类和回归:Pandas 可以用于多分类和回归问题,可以方便地处理复杂的数据集。

  1. 聚类:Pandas 可以用于层次聚类和k均值聚类等聚类算法,可以对数据进行快速聚类。

  1. 特征工程:Pandas 可以用于特征提取和降维,可以将高维数据转换为低维数据,并保留重要特征。

  1. 机器学习模型训练:Pandas 可以用于加载和预处理机器学习模型的输出,可以方便地处理大型数据集。

  1. 数据可视化:Pandas 可以用于绘制热力图、散点图、箱线图等图表,可以方便地对数据进行可视化分析。

总之,Pandas 是一个功能强大的 Python 库,可以用于数据清洗、转换、分析和可视化等多个领域。在进行数据处理和机器学习时,Pandas 可以提供很大的帮助。文章来源地址https://www.toymoban.com/news/detail-467211.html

到了这里,关于Pandas使用技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 奇淫技巧系列第一篇:熟练使用Fetch一个干翻PostMan的顶级技巧

    不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利 按照如下的请求进行复制: 复制出来的东西如下: 接着我们拿着fetch的命令拿到控制台

    2024年02月09日
    浏览(44)
  • vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格

    背景描述:         我在使用VSCode,这玩意很好用,但是,有一个缺点是,我想使用Tab来做一些对齐,但是我发现在VSCode中,无论是Tab还是多个空格,最终显示出来的都是一个空格         使用代码可以实现打印Tab或是多个空格:`emsp;` 对应一个tab         但是我发现想要

    2024年02月06日
    浏览(62)
  • 【通过一个脚本将多个实验按序跑起来,无需人工逐个调试 & Linux使用技巧】

    在服务器上跑实验时,通常需要跑多次实验,但这些实验的差异之处仅有一两处参数的变动,如果在服务器盯着一个一个的跑,势必需要消耗大量的精力和时间; 因此,将跑所有实验的指令全部汇总到一个脚本中,只需要run一个脚本即可,无需人工变更; 还可以将每个跑完

    2024年02月15日
    浏览(40)
  • 【C++】做一个飞机空战小游戏(六)——给两架飞机设置不同颜色(cout输出彩色字符、结构体使用技巧)

      [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞

    2024年02月14日
    浏览(48)
  • 圈X HTTP数据抓取攻略:使用技巧与注意事项

    随着互联网的快速发展,数据已经成为了一个公司或组织最重要的资产之一。而想要获取所需数据,就需要使用数据抓取工具。在众多的数据抓取工具中,圈X HTTP 数据抓取是一款非常优秀的工具,它可以帮助用户轻松地获取所需数据。本文将详细介绍圈X HTTP 数据抓取的使用

    2024年02月07日
    浏览(43)
  • 数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库

    通过pandas实现数据库的读,写操作时,首先需要进行数据库的连接,然后通过调用pandas所提供的数据库读写函数与方法来实现数据库的读写操作。 Pandas提供了3个函数用于数据库的读操作 read_sql_query() 可以实现对数据库的查询操作,但是不能直接读取数据库中的某个表,需要

    2024年01月16日
    浏览(53)
  • 《Python数据分析技术栈》第06章使用 Pandas 准备数据 01 Pandas概览(Pandas at a glance)

    《Python数据分析技术栈》第06章使用 Pandas 准备数据 01 Pandas概览(Pandas at a glance) Wes McKinney developed the Pandas library in 2008. The name (Pandas) comes from the term “Panel Data” used in econometrics for analyzing time-series data. Pandas has many features, listed in the following, that make it a popular tool for data wrang

    2024年01月23日
    浏览(46)
  • 《Python数据分析技术栈》第06章使用 Pandas 准备数据 11 pandas中的运算符 Operators in Pandas

    《Python数据分析技术栈》第06章使用 Pandas 准备数据 11 pandas中的运算符 Operators in Pandas Pandas uses the following operators that can be applied to a whole series. While Python would require a loop to iterate through every element in a list or dictionary, Pandas takes advantage of the feature of vectorization implemented in NumPy that

    2024年01月23日
    浏览(50)
  • 欧姆龙SysmacStudio 关于模块化编程的使用技巧---全局变量和数据类型

    在平常使用欧姆龙SysmacStudio 编程时,有新建大量的结构体和全局变量,若不分类进行模块化,会造成查找不方便,下面分享的就是对全局变量和数据类型进行模块分类,方便查找,提高编程效率。 下图中是新建的一个系统周期时钟频率的FB块 为了方便在程序中使用,将FB的输

    2024年02月06日
    浏览(68)
  • Python数据分析之Pandas核心使用进阶

    在Pandas中,有两种常见的方法可以进行DataFrame的行级遍历:使用 iterrows() 和使用 iteritems() 。 使用 iterrows() 方法: iterrows() 方法返回一个迭代器,可以按行遍历DataFrame。每次迭代返回一个包含行索引和该行数据的元组。 输出结果为: 在上面的例子中,我们使用 iterrows() 方法遍

    2024年02月11日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包