文章目录
前言
- 对于二维平面数据来说,pandas无疑是数据处理和数据分析的好帮手,接下来就细细的演示和讲解一下,一些关于pandas的操作,希望能对你有所帮助。
这里主要利用pandas从六个方面来对数据进行操作:
1 导入数据
自我生成数据
pandas 有两个常用的数据结构:Series 和 DataFrame,可以用来生成你想要的数组型对象。
pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
外部加载数据
但是,在一般的数据处理分析中,往往自我生成数据情况较少,更多的是导入数据。pandas提供了一些用于将表格型数据读取为DataFrame
对象的函数。
这里导入本次需要的用到的数据(该数据来自天猫爬取的网页数据,有兴趣的可以自己去爬取,这里只是暂做示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel("E:/data/tianmao_phone.xlsx")
表1对我们常用的文件格式进行了总结,其中pd.read_csv()
和pd.read_excel()
可能会是你今后用得最多的。
这些pandas的解析函数参数较为复杂,具体了解可以在pandas官网上自行查阅,或者可以再Jupyter Notebook 中采用help(pd.read_excel)
命令查阅。
注:这里使用的都是小规模的数据(500万以下),而在现实生活中的数据有时往往跟为复杂(动辄几个G到TB),pandas在读取的时候往往就会用到chunsize等参数(可以传入大小)分块读取。
但是,其效率也是低下,所以建议大数据还是用一些适合它的的工具(数据库等),没有最好的工具,只有最适合的工具。
2 审阅数据
在成功导入数据以后,需要对数据进行审阅,目的是,了解数据结构、类型、大小等情况。方便理解数据和为后续处理分析打下基础。
1.查看前5行(默认前5行,你也可以在括号里输入你想要的行数):
data.head()
2.查看倒数5行:
data.tail()
3.查看维度信息:
data.shape
4.查看每一列的数据格式:
data.dtypes
5.查看数据表基本信息(维度、列名称、数据格式、所占空间等):
data.info()
6.查看某一列具体信息:
#两种处理效果一样
data['月销量']
data.月销量
7.也可以按索引提取单行或多行数值:
#提取第4行
data.iloc[4]
#提取到第4行
data.iloc[0:4]
#提取所有行,0到4列(也可以反过来)
data.iloc[:,0:4]
#提取第0、2、4行,第3、4列
data.iloc[[0,2,4].[3,4]]
注:数据的选取较为灵活,方法也较多,诸如:data["你要选取的列名称"]
,data.loc[]
,data.iloc[]
,data.ix[]
等等。具体可以上官网了解一下他们的区别和作用,这里就不再继续详述了。
8.将数据进行排序
#按销量的大小进行排序,只取前8行
data.sort_values(by=['累计评价'],ascending=False).iloc[:8,:]
#查看类别信息
count_class = pd.value_counts(data['店铺名称'],sort=True).sort_index()
print(count_class)
9.查看基本的统计信息(最大值、最小值、平均值、中位值、四分位值、标准差等):
data.describe()
3 数据预处理
说完对表中的数据进行简单的查看,下面进行对数据进行的最关键操作:数据预处理
(1) 数据集成
由于我的数据较为规整,不需要合并和拼接,这里只是简单介绍一下原理。
1.pandas.merge
可根据一个或多个键将不同DataFrame中的行连接起来。SQL或其他关系型数据库的用户对此应该会比较熟悉,因为它实现的就是数据库的join操作。
pandas.merge(left, right, how='inner', on=None,
left_on=None, right_on=None, left_index=False, right_index=False,
sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
该函数主要用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN。典型应用场景是,针对同一个主键存在两张包含不同字段的表,现在我们想把他们整合到一张表里。在此典型情况下,结果集的行数并没有增加,列数则为两个元数据的列数和减去连接键的数量。
2.pandas.concat
该方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates
方法。
pandas.concat(objs, axis=0, join='outer',
join_axes=None, ignore_index=False, keys=None,</