肝了几天,十分钟入门pandas(上)

简介: 肝了几天,十分钟入门pandas(上)

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

基础包导入

这个一篇针对pandas新手的简短入门,想要了解更多复杂的内容,参阅Cookbookhttps://pandas.pydata.org/pandas-docs/stable/user_guide/cookbook.html

通常,我们首先要导入以下几个库:

%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

创建对象

通过传递一个list来创建Series,pandas会默认创建整型索引:

s = pd.Series([1,3,5,np.nan,6,8])
s

image.png

通过传递一个numpy array,日期索引以及列标签来创建一个DataFrame

dates = pd.date_range('20130101', periods=6)
dates

image.png

df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df

image.png

通过传递一个能够被转换为类似series的dict对象来创建一个DataFrame:

df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20130102'),
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     'D' : np.array([3]*4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     'F' : 'foo' })
df2

image.png

可以看到各列的数据类型为:

df2.dtypes

image.png

查看数据

查看frame中头部和尾部的几行:

df.head()

image.png

df.tail(3)

image.png

显示索引、列名以及底层的numpy数据

df.index

image.png

df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
df.values

image.png

describe()能对数据做一个快速统计汇总

df.describe()

image.png

对数据做转置:

df.T

image.png

按轴进行排序:

df.sort_index(axis=1, ascending=False)

image.png

按值进行排序 :

df.sort_values(by='B')

image.png

数据选择

注意:虽然标准的Python/Numpy的表达式能完成选择与赋值等功能,但我们仍推荐使用优化过的pandas数据访问方法:.at,.iat,.loc,.iloc和.ix

选取

选择某一列数据,它会返回一个Series,等同于df.A

df['A']

image.png

通过使用**[ ]**进行切片选取:

df[0:3]

image.png

df['20130102':'20130104']

image.png

通过标签选取

通过标签进行交叉选取:

df.loc[dates[0]]
A   -0.900524
B   -0.302515
C   -0.541762
D    1.562916
Name: 2013-01-01 00:00:00, dtype: float64

使用标签对多个轴进行选取

df.loc[:,['A','B']]

image.png

df.loc[:,['A','B']][:3]

image.png

进行标签切片,包含两个端点

df.loc['20130102':'20130104',['A','B']]

image.png

对于返回的对象进行降维处理

df.loc['20130102',['A','B']]
A   -0.884117
B   -0.650741
Name: 2013-01-02 00:00:00, dtype: float64

获取一个标量

df.loc[dates[0],'A']
-0.9005238449408509

快速获取标量(与上面的方法等价)

df.at[dates[0],'A']
-0.9005238449408509

通过位置选取

通过传递整型的位置进行选取

df.iloc[3]
A    1.260276
B    1.000297
C    0.809801
D   -0.389713
Name: 2013-01-04 00:00:00, dtype: float64

通过整型的位置切片进行选取,与python/numpy形式相同

df.iloc[3:5,0:2]

image.png

只对行进行切片

df.iloc[1:3,:]

A B C D
2013-01-02 -0.884117 -0.650741 0.217345 0.268915
2013-01-03 0.220822 0.790527 0.692172 0.723441

只对列进行切片

df.iloc[:,1:3]

B C
2013-01-01 -0.302515 -0.541762
2013-01-02 -0.650741 0.217345
2013-01-03 0.790527 0.692172
2013-01-04 1.000297 0.809801
2013-01-05 1.468609 0.360648
2013-01-06 0.235352 1.117395

只获取某个值

df.iloc[1,1]
-0.6507407272837356

快速获取某个值(与上面的方法等价)

df.iat[1,1]
-0.6507407272837356

布尔索引

用某列的值来选取数据

df[df.A > 0]

image.png

where操作来选取数据

df[df > 0]

image.png

用**isin()**方法来过滤数据

df2 = df.copy()
df2['E'] = ['one', 'one', 'two', 'three', 'four', 'three']
df2

image.png

df2[df2['E'].isin(['two', 'four'])]

image.png

赋值

赋值一个新的列,通过索引来自动对齐数据

s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102',periods=6))
s1
2013-01-02    1
2013-01-03    2
2013-01-04    3
2013-01-05    4
2013-01-06    5
2013-01-07    6
Freq: D, dtype: int64
df['F'] = s1
df

image.png

通过标签赋值

df.at[dates[0], 'A'] = 0
df

image.png

通过位置赋值

df.iat[0,1] = 0
df

image.png

通过传递numpy array赋值

df.loc[:,'D'] = np.array([5] * len(df))
df

image.png

通过where操作来赋值

df2 = df.copy()
df2[df2 > 0] = -df2
df2

image.png

缺失值处理

在pandas中,用np.nan来代表缺失值,这些值默认不会参与运算。

reindex()允许你修改、增加、删除指定轴上的索引,并返回一个数据副本。

df1 = df.reindex(index=dates[0:4], columns=list(df.columns)+['E'])
df1.loc[dates[0]:dates[1],'E'] = 1
df1

image.png

剔除所有包含缺失值的行数据

df1.dropna(how='any')

image.png

填充缺失值

df1.fillna(value=5)

image.png

获取值是否为nan的布尔标记

pd.isnull(df1)

image.png

运算

统计

运算过程中,通常不包含缺失值。

进行描述性统计

df.mean()

image.png

对其他轴进行同样的运算

df.mean(1)

image.png

对于拥有不同维度的对象进行运算时需要对齐。除此之外,pandas会自动沿着指定维度计算。

s = pd.Series([1,3,5,np.nan,6,8], index=dates).shift(2)
s

image.png

df.sub(s, axis='index')

image.png

Apply 函数作用

通过apply()对函数作用

df.apply(np.cumsum)

image.png

df.apply(lambda x:x.max()-x.min())

image.png

频数统计

s = pd.Series(np.random.randint(0, 7, size=10))
s

image.png

s.value_counts()

image.png

字符串方法

对于Series对象,在其str属性中有着一系列的字符串处理方法。就如同下段代码一样,能很方便的对array中各个元素进行运算。值得注意的是,在str属性中的模式匹配默认使用正则表达式。

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
s.str.lower()


相关文章
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2
|
2月前
|
存储 大数据 数据处理
Pandas入门:安装与基本操作
Pandas 是一个强大的 Python 数据处理库,提供高效的数据结构和分析工具。本文从安装开始,介绍 Pandas 的基本操作,包括 `Series` 和 `DataFrame` 的创建、查看、选择、过滤、添加和删除数据等。同时,指出了一些常见的问题和易错点,帮助初学者快速上手。
119 2
|
3月前
|
数据采集 数据可视化 数据处理
Python数据科学:Pandas库入门与实践
Python数据科学:Pandas库入门与实践
|
6月前
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。
|
6月前
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。
|
8月前
|
数据采集 机器学习/深度学习 数据挖掘
Pandas简易入门指南
在数据科学和数据分析的世界中,Pandas库以其强大的数据处理能力而闻名。作为一个基于Python的开源库,Pandas提供了快速、灵活和富有表现力的数据结构,旨在使数据处理变得简单和直观。无论是处理时间序列数据、统计数据分析,还是进行数据清洗和准备,Pandas都是数据科学家的首选工具之一。
89 4
|
9月前
|
数据采集 SQL 数据可视化
使用Python和Pandas库进行数据分析的入门指南
使用Python和Pandas库进行数据分析的入门指南
187 0
|
3月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
114 0
|
3月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
83 2
|
4月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
114 3