首页生活资讯正文

Pandas入门教程

2024-09-21 次浏览

年夜家好,我是皮皮。实在这个pandas教程,卷的很严重了,才哥,小P等人写了许多的文章,这篇文章是粉丝【古月星辰】投稿,本身进修进程中整顿的一些根基材料,整顿成文,这里发出来给年夜家一路进修。


Pandas入门

Pandas入门教程
(图片来源网络,侵删)

本文主要具体先容了pandas的各类根基操作,源文件为zlJob.csv,可以私我进行获取,下图是原始数据部门一览。


pandas官网:

https://pandas.pydata.org/pandas-docs/stable/getting_started/index.html

目次布局:

天生数据表数据表根本操作数据洗濯光阴序列

一.天生数据表

1.1 数据读取

一样平常环境下我们获得的数据类型年夜多半csv或者excel文件,这里仅给出csv,

读取csv文件

pd.read_csv()

读取excel文件

pd.read_excel()

1.2 数据的创立

pandas可以创立两种数据类型,series和DataFrame;

创立Series(相似于列表,是一个一维序列)s = pd.Series([1,2,3,4,5])
创立dataframe(相似于excel表格,是二维数据)df2 = pd.DataFrame(
{ "大众A"大众: 1.0,
"大众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"大众,


二、数据表的根本操作

2.1 数据查看

查看前五行data.head() # head() 参数表现前几行,默以为5


根本信息

data.shape

(990, 9)

data.dtypes


查看空值

data['name'].isnull() # 查看name这一列是否有空值


2.2 行和列的操作

添加一列

dic = {'name':'前端开发','salary':2万-2.5万, 'company':'上海科技有限公司', 'adress':'上海','eduBack':'本科','companyType':'平易近营', 'scale':1000-10000人,'info':'小法式'}df = pd.Series(dic)df.name = 38738data = data.append(df)data.tail()

成果:


删除一行

data = data.drop([990])

添加一列

data = data["大众xx"大众] = range(len(data))

删除一列

data = data.drop('序号',axis=1)

axis表现轴向,axis=1,表现纵向(删除一列)

2.3 索引操作

locloc主要是基于标签(label)的,包含行标签(index)和列标签(columns),即行名称和列名称,可以使用df.loc[index_name,col_name],选择指定地位的数据,其它的用法有:1. 使用单个标签data.loc[10,'salary']
# 9千-1.3万2. 单个标签的list
data.loc[:,'name'][:5]
3. 标签的切片工具data.loc[:,['name','salary']][:5]iloc

iloc是基于地位的索引,应用元素在各个轴上的索引序号进行选择,序号超越规模会发生IndexError,切片时容许序号跨越规模,用法包含:

1. 使用整数

data.iloc[2] # 掏出索引为2的那一行


2. 使用列表或数组

data.iloc[:5]


3. 切片工具

data.iloc[:5,:4] # 以,朋分,前面切片5行,后面切片4列


常见的办法就如上所示。

2.4 条理化索引

series条理化索引

s = pd.Series(np.arange(1,10),index=[list('aaabbccdd'),[1,2,3,1,2,3,1,2,3]])


dataframe条理化索引

df = pd.DataFrame(np.arange(12).reshape(4,3),index=[['a','a','b','b'],[1,2,1,2]],columns=[['X','X','Y'],['m','n','t']])


条理化索引利用于当目的数据的特性值许多时,我们必要对多个特性进行阐发。

三、数据预处置

3.1 缺失值处置

起首创立一个简单的表格:

df = pd.DataFrame({'state':['a','b','c','d'],'year':[1991,1992,1993,1994],'pop':[6.0,7.0,8.0,np.NaN]})df

成果如下:


断定缺失值

df['pop'].isnull()

成果如下:


添补缺失值

df['pop'].fillna(0,inplace=True) # 使用0添补缺失值df


删除缺失值

data.dropna(how = 'all') # 传入这个参数后将只丢弃全为缺失值的那些行

成果如下:


当然还有其他环境:

data.dropna(axis = 1) # 丢弃出缺失值的列(一样平常不会这么做,如许会删失落一个特性)data.dropna(axis=1,how=公众all"大众) # 丢弃全为缺失值的那些列data.dropna(axis=0,subset = [公众Age"大众, 公众Sex"大众]) # 丢弃‘Age’和‘Sex’这两列中出缺失值的行

这里就不做逐一展现(原理都是一样的)

3.2 字符处置

肃清字符空格

df['A']=df['A'].map(str.stri())

年夜小写转换

df['A'] = df['A'].str.lower()

3.3 反复值处置

删除后面呈现的反复值

df['A'] = df['A'].drop_duplicates() # 某一列后呈现反复数据被肃清

删除先呈现的反复值

df['A'] = df['A'].drop_duplicates(keep=last) # # 某一列先呈现反复数据被肃清

数据替换

df['A'].replace('sh','shanghai') # 同于字符串替换

四、数据表操作

分组

groupby

group = data.groupby(data['name']) # 依据职位名称进行分组group

依据职位名称进行分组:

获得一个工具,我们可以去进行均匀值,总和计算;

当然了可以依据多个特性进行分组,也是没有问题的;

聚合

concat():

pd.concat( objs, axis=0, join="大众outer"大众, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )

官网参数解释如下:

objs: Series 或 DataFrame 工具的序列或映射。假如通报了 dict,排序后的键将用作keys参数,除非通报,在这种环境下将选择值(见下文)。任何 None 工具都将被静默删除,除非它们都是 None 在这种环境下将激发 ValueError 。axis :{0, 1, …},默以为 0。要沿其衔接的轴。join: {'inner', 'outer'}, 默以为 'outer'。若何处置其他轴上的索引。外部用于结合,内部用于交集。ignore_index: 布尔值,默以为 False。假如为 True,则不要使用串联轴上的索引值。成果轴将被标志为 0, …, n - 1。假如您在衔接轴没有故意义的索引信息的环境下衔接工具,这将异常有效。请注意,其他轴上的索引值在衔接中仍旧有用。keys: 序列,默认无。使用通报的键作为最外层构建分层索引。假如经由过程了多个级别,则应包括元组。levels: 序列列表,默认无。用于构建 MultiIndex 的特定级别(独一值)。不然,它们将从密钥中揣摸出来。names: 列表,默认无。天生的分层索引中级其余名称。verify_integrity: 布尔值,默以为 False。反省新的串联轴是否包括反复项。相对付现实的数据串联,这可能异常昂贵。copy: 布尔值,默以为真。假如为 False,则不要不需要地复制数据。

测试:

df1 = pd.DataFrame( { "大众A"大众: ["大众A0公众, "大众A1"大众, 公众A2公众, "大众A3公众], 公众B"大众: ["大众B0"大众, "大众B1"大众, 公众B2公众, "大众B3"大众], "大众C"大众: ["大众C0"大众, 公众C1"大众, 公众C2"大众, 公众C3"大众], 公众D公众: ["大众D0"大众, "大众D1公众, "大众D2公众, "大众D3"大众], }, index=[0, 1, 2, 3],)df2 = pd.DataFrame( { 公众A公众: [公众A4公众, "大众A5"大众, 公众A6"大众, 公众A7"大众], 公众B"大众: [公众B4公众, "大众B5"大众, "大众B6"大众, 公众B7公众], "大众C公众: [公众C4"大众, "大众C5公众, "大众C6"大众, "大众C7"大众], "大众D"大众: ["大众D4"大众, "大众D5公众, "大众D6"大众, "大众D7公众], }, index=[4, 5, 6, 7],)df3 = pd.DataFrame( { "大众A"大众: ["大众A8"大众, 公众A9公众, "大众A10"大众, 公众A11公众], "大众B"大众: [公众B8"大众, "大众B9"大众, "大众B10公众, 公众B11"大众], "大众C公众: ["大众C8"大众, "大众C9公众, "大众C10"大众, "大众C11"大众], "大众D"大众: ["大众D8"大众, "大众D9"大众, "大众D10"大众, "大众D11公众], }, index=[8, 9, 10, 11],)frames = [df1, df2, df3]result = pd.concat(frames)result

成果如下:


merge()

pd.merge( left, right, how="大众inner"大众, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=("大众_x"大众, "大众_y"大众), copy=True, indicator=False, validate=None,)

这里给出常用参数解释:

left:一个 DataFrame 或定名的 Series 工具;right:另一个 DataFrame 或定名的 Series 工具;on: 要参加的列或索引级别号称;left_on:左侧 DataFrame 或 Series 的列或索引级别用作键。可所以列名称、索引级别号称或长度即是 DataFrame 或 Series 长度的数组;right_on:来自正确 DataFrame 或 Series 的列或索引级别用作键。可所以列名称、索引级别号称或长度即是 DataFrame 或 Series 长度的数组left_index:假如True,则使用左侧 DataFrame 或 Series 中的索引(行标签)作为其衔接键;right_index:与left_index正确的 DataFrame 或 Series 的用法雷同;how: 'left', 'right', 'outer', 之一'inner'。默以为inner. 有关每种办法的更具体阐明,请参见下文。

测试:

left = pd.DataFrame( { 公众key"大众: [公众K0公众, 公众K1"大众, 公众K2"大众, "大众K3公众], "大众A"大众: ["大众A0"大众, "大众A1公众, "大众A2"大众, "大众A3"大众], 公众B"大众: [公众B0"大众, 公众B1"大众, "大众B2"大众, 公众B3公众], })right = pd.DataFrame( { "大众key"大众: [公众K0"大众, "大众K1公众, "大众K2"大众, "大众K3公众], "大众C公众: ["大众C0"大众, "大众C1"大众, "大众C2"大众, 公众C3"大众], "大众D公众: ["大众D0"大众, "大众D1"大众, "大众D2"大众, "大众D3"大众], })result = pd.merge(left, right, on=公众key"大众)result

成果如下:


雷同的字段是'key',以是指定on='key',进行归并。

五、光阴序列

5.1 天生一段光阴规模

date = pd.period_range(start='20210913',end='20210919')date

输出成果:

PeriodIndex(['2021-09-13', '2021-09-14', '2021-09-15', '2021-09-16', '2021-09-17', '2021-09-18', '2021-09-19'], dtype='period[D]', freq='D')

5.2 光阴序列在pandas中的利用

index = pd.period_range(start='20210913',end='20210918')df = pd.DataFrame(np.arange(24).reshape((6,4)),index=index)df

输出成果:


六、总结

本文基于源文件zlJob.csv,进行了部门pandas操作,演示了pandas库常见的数据处置操作,因为pandas功效繁杂,详细具体讲授请参见官网

大众公众DataFrame
pr视频编辑软件下载-2024绿色中文版免费下载软件网盘下载 苗木采购合同范本撰写
相关内容