肝了几天,十分钟入门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()


相关文章
|
3月前
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。
|
3月前
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。
|
5月前
|
数据采集 机器学习/深度学习 数据挖掘
Pandas简易入门指南
在数据科学和数据分析的世界中,Pandas库以其强大的数据处理能力而闻名。作为一个基于Python的开源库,Pandas提供了快速、灵活和富有表现力的数据结构,旨在使数据处理变得简单和直观。无论是处理时间序列数据、统计数据分析,还是进行数据清洗和准备,Pandas都是数据科学家的首选工具之一。
58 4
|
6月前
|
索引 Python
【Pandas】- pandas入门
【Pandas】- pandas入门
|
6月前
|
数据采集 SQL 数据可视化
使用Python和Pandas库进行数据分析的入门指南
使用Python和Pandas库进行数据分析的入门指南
146 0
|
6月前
|
数据采集 数据挖掘 数据处理
《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)
《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)
50 1
|
6月前
|
SQL 存储 数据处理
Pandas入门指南:开启数据处理之旅
【4月更文挑战第16天】Pandas是Python中的数据处理库,提供高性能数据结构Series和DataFrame,简化数据操作。要开始使用,先安装Pandas:`pip install pandas`,然后`import pandas as pd`。Series是一维标签数组,DataFrame是二维表格数据。Pandas支持读写CSV、Excel、SQL数据,以及数据清洗、处理、筛选和排序。它是数据科学家和分析师处理结构化数据的得力工具。开始你的Pandas数据之旅吧!
|
18天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
48 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
76 0
|
19天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2