Panda数据分析入门

简介: 7月更文挑战第12天

数据的处理的软件包有很多,在python中主要应用Pandas来进行处理。Pandas是一个十分成熟的数据处理包,熟练掌握可以高效并且方便地将数据进行转换和清洗,本节主要整理了pandas的一些基本技能和实用技巧,为励志成为数据分析师的你铺路搭桥。

Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于数据分析,以及数据清洗和准备等工作。数据科学家经常和表格形式的数据(比如.csv、.tsv、.xlsx)打交道。Pandas可以使用类似SQL的方式非常方便地加载、处理、分析这些表格形式的数据。搭配Matplotlib和Seaborn效果更好。
pandas可以满足以下需求:
• 具备按轴自动或显式数据对齐功能的数据结构。这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误、集成时间序列功能、既能处理时间序列数据也能处理非时间序列数据的数据结构、数学运算和简约(比如对某个轴求和)可以根据不同的元数据(轴编号)执行、
• 灵活处理缺失数据、
• 在实际构建任何模型之前,任何机器学习项目中的大量时间都必须花费在准备数据、
• 分析基本趋势和模式上。因此需要Pandas来进行处理。
下面我们开始今天的学习之旅。

  1. Pandas入门
    1.1 Pandas的安装与导入
    首先,在使用Pandas前,必须安装Pandas。如果你安装过Anaconda,就可以执行如下命令安装Pandas:
    conda install pandas如果没有安装Anaconda,也没有关系,可以使用Python的pip命令来安装:
    pip install pandas注意:pandas安装会用到numpy库,因此在安装pandas之前一定要安装好numpy。 导入:为了简便,这里使用pd作为pandas的缩写,因为pandas依赖numpy,所以在使用之前需要安装和导入numpy
    import numpy as np
    import pandas as pd打印pandas的版本
    pd.version考虑如下的Python字典数据和Python列表标签:
    data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
     'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
     'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
     'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
    
    labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']1.2 pandas数据结构介绍
    Pandas有两个数据结构:Series和DataFrame。
    pd.DataFrame:创建pandas矩阵
    • Series是一种类似于以为NumPy数组的对象,它由一组数据(各种NumPy数据类型)和与之相关的一组数据标签(即索引)组成的。可以用index和values分别规定索引和值。如果不规定索引,会自动创建 0 到 N-1 索引。
    pd.Series:创建pandas列表
    • DataFrame是一种表格型结构,含有一组有序的列,每一列可以是不同的数据类型。既有行索引,又有列索引。

​​

​​1.从具有索引标签的字典数据创建一个DataFrame df.
df = pd.DataFrame(data,index = labels)返回DataFrame的前三行
df.iloc[:3]
df.head(3)运行结果如下:

2.从numpy 数组构造DataFrame
df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['a', 'b', 'c'])
df2运行结果如下

3.通过其他DataFrame来创建DataFrame df3
df3 = df2[["a","b","c"]].copy()
df3运行结果如下:

4.从csv文件中每隔n行来创建Dataframe
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/BostonHousing.csv', chunksize=50)
df2 = pd.DataFrame()

5.用Series创建DataFrame
s_1 = pd.Series(data['animal'])
s_2 = pd.Series(data['age'])
s_3 = pd.Series(data['visits'])
s_4 = pd.Series(data['priority'])
pd_2 = pd.DataFrame([s_1,s_2,s_3,s_4])
pd_2运行结果如下:

pandas处理NaN值
dropna(axis=, how=):丢弃NaN数据,{axis:0(按行丢弃),1(按列丢弃)} {how:'any'(只要含有NaN数据就丢弃),'all'(所有数据都为NaN时丢弃)}
fillna(value=):将NaN值都设置为value的值
isnull():对每各元素进行判断是否是NaN,返回结果矩阵
np.any(matrix) == value:判断matrix矩阵中是否有value值
np.all(matrix) == value:判断matrix矩阵中是否所有元素都是value值
pandas读取数据、导出数据
根据数据的格式,pandas提供了多种数据读取和导出的方法,如:
读取数据:read_csv、read_table、read_fwf、read_clipboard、read_excel、read_hdf
导出数据:to_csv、to_table、to_fwf、to_clipboard、to_excel、to_hdf
df = pd.read_csv('Q1.csv')
print(df)
df.to_csv('Q1_pandas.csv')pandas合并数据
concat方法是拼接函数,有行拼接和列拼接,默认是行拼接,拼接方法默认是外拼接(并集),拼接对象是pandas数据类型。
第一个参数:需要合并的矩阵
axis:合并维度,0:按行合并,1:按列合并
join:处理非公有 列/行 的方式,inner:去除非公有的 列/行,outer:对非公有的 列/行 进行NaN值填充然后合并
ignore_index:是否重排行索引
df1 = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D'], index=[0, 1, 2])
df2 = pd.DataFrame(np.ones((3, 4)), columns=['B', 'C', 'D', 'E'], index=[1, 2, 3])
print(pd.concat([df1, df2], join='outer', ignore_index=True)) # join = {'outer', 'inner'}
print(pd.concat([df1, df2], axis=1, join_axes=[df1.index]))
print(df1.append([df2], ignore_index=True))append方法在index方向连接两个DataFrame或者对DataFrame进行扩展
append 方法可以直接用list对DataFrame进行扩展。
df = pd.DataFrame([[1, 2], [3, 4]])
df = df.append([[1,2]])
print(df)运行结果:

或者也可以将两个DataFrame连接起来。
df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df = df.append(df2)
print(df)运行结果:

需要注意的是,append方法并不能像list的append方法一样对原来的df继续修改,而是建立了一个新的对象。如果要修改df,那么需要重新对df赋值,所以append的方法执行效率并不是很高。
Join方法 是基于Index连接DataFrame,连接方法有内连接、外连接(左连接和右连接)
caller = pd.DataFrame({'key':['A0','A1','A2','A3','A4','A5'],'B':['B0','B1','B2','B3','B4','B5']})
other = pd.DataFrame({'key':['A0','A1','A2'],'C':['C0','C1','C2']})
caller.join(other,lsuffix='_caller',rsuffix='_other',how='inner')运行结果如下:

另外,还有一种merge方法与Join方法类似,不过语法略有不同。
通过on连接两个数据集的相同列,how表示连接的方式也有内连接、外连接(左连接和右连接)
使用merge方式要求合并的两个DataFrame需要有两数据集有一个相同列(不要求数值完全相同),继续以上面数据为例,对比下区别
df = pd.merge(caller,other,on = ['key'],how = 'inner')

相关文章
|
4月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【8月更文挑战第29天】在数据驱动的时代,掌握数据分析技能变得尤为重要。本文将引导您了解如何使用Python这一强大工具来进行数据分析,从设置开发环境到实际操作案例,逐步深入,帮助您建立起数据分析的基本框架和思维模式。通过阅读本文,您将学会如何利用Python处理、分析和可视化数据,为进一步深入学习奠定坚实的基础。
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析入门涉及基础如Python语言、数据分析概念及优势。
【7月更文挑战第5天】Python数据分析入门涉及基础如Python语言、数据分析概念及优势。关键工具包括NumPy(数组操作)、Pandas(数据处理)、Matplotlib(绘图)、Seaborn(高级可视化)和Scikit-learn(机器学习)。流程涵盖数据获取、清洗、探索、建模、评估和展示。学习和实践这些将助你有效利用数据。
56 2
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
|
2月前
|
数据可视化 数据挖掘 大数据
Python 数据分析入门:从零开始处理数据集
Python 数据分析入门:从零开始处理数据集
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析:从入门到实践
使用Python进行数据分析:从入门到实践
57 2
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【9月更文挑战第33天】本文旨在为初学者提供一个关于使用Python进行数据分析的全面概述。我们将从基本的安装和设置开始,逐步介绍数据处理、数据可视化以及机器学习的基本概念和应用。文章将通过实际代码示例来展示如何使用Python及其相关库来解决常见的数据分析问题。
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
深入浅出:用Python进行数据分析的入门指南
【10月更文挑战第21天】 在信息爆炸的时代,掌握数据分析技能就像拥有一把钥匙,能够解锁隐藏在庞大数据集背后的秘密。本文将引导你通过Python语言,学习如何从零开始进行数据分析。我们将一起探索数据的收集、处理、分析和可视化等步骤,并最终学会如何利用数据讲故事。无论你是编程新手还是希望提升数据分析能力的专业人士,这篇文章都将为你提供一条清晰的学习路径。
|
2月前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--入门
Python数据分析篇--NumPy--入门
38 0
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
Python中的简单数据分析:入门指南
【10月更文挑战第2天】Python中的简单数据分析:入门指南
36 0
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。