大数据产品经理python_给产品经理的大数据处理教程—Pandas

本文是针对大数据产品经理的Pandas教程,介绍了如何使用Python的Pandas库进行数据处理。主要内容包括Pandas的基本数据结构,数据导入,数据查看,选择与筛选数据,数据清洗,数据分组与聚合,数据合并以及数据透视表的创建。通过实例展示了如何利用Pandas高效地处理数据,降低对Excel的依赖,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

当你经常在工作中拿到几十万或几百万行的中间数据结果,需要vlookup和数据透视,却发现Excel卡成狗还常常崩溃,找RD还被白眼时,你需要了解一下Pandas了。

人生苦短,我用python。Pandas是当前用于数据处理和分析中最流行的Python库。学会它能极大地简化日常对数据的处理操作。学会Pandas能减轻Excel带来的焦虑与脱发,配合jupyter notebook使用有奇效。

文中提到的具体数据和对应的jupyter notebook见文末。这里使用到的数据集是经典的泰坦尼克号人员名单数据集,可以替换成你实际的业务数据。

下面进入正题!

Pandas包括两大数据结构:Pandas DataFrame

Pandas Series

完全可以把Pandas DataFrame理解成一个Excel表格。包括行与列,差异在于一列中的数据类型需要保持一致。Pandas Series可以理解成Pandas DataFrame中的一列。

建议大家打开jupyter实际操作一下,把结果打印出来看一看。

安装Install

需要首先确保自己有安装好Pandas library。可以通过Anaconda或pip进行安装。然后就可以 import pandas as pd

如果我们的业务数据当中列特别多,那么我们在看output时,一些列会被折叠起来,不能全部显示。这里有个小tips,我们简单修改一下Pandas的参数设置就可以看完整了。

pd.set_option('display.max_columns', 500) 默认只展示50列,修改之后可以同时展示500列。

同理对行也有这样的需求的话: pd.set_option('display.max_rows',500)

导入数据

无论是CSV还是Excel文件都能轻松导入Pandas:导入CSV文件: pd.read_csv('train.csv')

导入Excel文件: pd.read_excel('train.xls')

可能的问题:要导入成功,需要保证对应的file在当前的目录下。可以在jupyter里通过!pwd查看当前的路径,!ls查看当前路径下的文件。

导入默认文件第一行为columns列名,如果文件中没有列名,需要指定pd.read_csv('train.csv',header = -1)

如果某一列为datetime类型,可以指定parse_dates=[column_name]来按照日期来进行解析。假设这样一列的列名为"Date",pd.read_excel("train.xls", parse_dates = ["Date"])

了解数据

1.DataFrame

df.head()获取dataframe的前5行。df.head(N)可以通过指定N值来获取任意行数。

df.tail()获取dataframe的后5行。

df.shape获取dataframe的行数与列数。

df.info()获取dataframe的索引值类型,列数据类型,填充情况和内存占用量。

df.describe()获取对dataframe的统计性数据。

2.columns

可以通过df["Age"].value_counts()获取对应值出现的频次,或者通过df["Age"].value_counts(1)来获取对应的占比。

df["Age"].isnull().sum()获取该列为空的数目。

df["Age"].notnull().sum()获取该列非空的数目。

df["Age"].unique()获取该列去重的数目。

df.columns获取所有的列名。

选择数据

1.通过列进行选择

df["Age"]选择对应这一列。 df[['PassengerId','Age','Survived']]选择对应这几列。

2.使用Index选择 主要使用.loc和.iloc。

df.loc[]使用rows和columns的名称来进行选择: df.loc[0:4,['PassengerId']]选择所有的行对应列为'Contour'的数据。:代表所有的行。需要指定对应的行时,可以写成df.loc[0:4,['PassengerId']]。

df.iloc使用对应位置的index来进行选择: df.iloc[:,3]选择所有行对应第三列的数据。 df.iloc[3,:]选择第三行所有列对应的数据。注意index从0开始。

3.过滤筛选

可以使用一个mask来帮助基于指定的条件进行筛选。

mask = df['Survived'] == 1

df[mask]

mask的值为True 或者False,表示是否符合对应的条件,即df['Survived'] == 1。df[mask]返回所有Contour列为Top的数据。

除了==的条件,还可以:

#值的范围:

mask2 = df['Age'] > 35

#是否在指定范围内

mask3 = df['Embarked'].isin(['S','C'])

筛选反向mask,可以写成df[~mask]

#筛选列的数据类型

df.select_dtypes(include=[np.number])

清洗数据

要做好数据分析,需要首先保证数据的质量。实际业务数据中或多或少存在一些问题,下面说一些实际中常用的数据清洗方法。注意指定inplace=True才能让改变在dataframe中实际执行。

1.替换错误的值 df.replace({'female': 'f','male':'m'}, inplace =True)

2.删除空的数据 df['Cabin'].dropna(inplace =True)

3.空值替换 df['Age'].fillna(df['Age'].mean(), inplace=True) #将空值替换为对应的平均值

4.删除行或列 df.drop(columns = ['Ticket'], inplace = True) df.drop(2, axis=0, inplace=True) axis=0指删除行,axis=1指删除列

5.更新列名 df.rename(columns = {'PassengerId' : 'PaId', 'Survived' : 'Surv'}, inplace = True)

6.更改数据 df['Fare'].apply(np.sqrt) 在列上指定某个操作使用.apply

数据分组和聚合

我们经常需要把数据按照某些维度聚合来观察另外一些列的分布情况。df.groupby(by=['Pclass'])['Fare'].mean()

df.groupby(by=['Pclass'])['Fare'].sum()

df.groupby(by=['Pclass'])['Fare'].count()

df.groupby(by=['Pclass', 'Surv'])['Fare'].mean()

DataFrame的合并

有时我们需要将dataframe按照一些规则合并在一起。按columns合并 pd.concat([df, df2], axis=1)

2. 按rows合并 pd.concat([df, df2], axis=0)

3. merge在一起,可以对应到Excel里的vlookup:

pd.merge(df, df2, left_on='PaId', right_on='PaId', how='outer') # how支持inner,outer,left,right

df与df2列重名儿的话,可以指定suffixes: pd.merge(df, df2,left_on='PaId', right_on='PaId', how='outer',suffixes=['_L', '_R'])

数据透视表

经典的Excel中的数据透视表功能,在Pandas中对应pivot_table:

df.pivot_table(index = 'Pclass', columns = 'Surv', values = 'Fare', aggfunc='mean')

输出结果

输出csv: df.to_csv('myDataFrame.csv', sep='\t') sep对应分隔符,默认的是","

输出excel:

writer = pd.ExcelWriter('myDataFrame.xlsx')

df.to_excel(writer, 'DataFrame')

writer.save()

数据和jupyter notebook

觉得有用的话关注我吧!

多谢多谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值