Python数据分析与挖掘所需的Pandas常用知识

简介:

前言

Pandas基于两种数据类型:series与dataframe。

一个series是一个一维的数据类型,其中每一个元素都有一个标签。series类似于Numpy中元素带标签的数组。其中,标签可以是数字或者字符串。

一个dataframe是一个二维的表结构。Pandas的dataframe可以存储许多种不同的数据类型,并且每一个坐标轴都有自己的标签。你可以把它想象成一个series的字典项。


Pandas常用知识

一、读取csv文件为dataframe
二、dataframe的数据概况
三、取列数据
四、取行数据
五、取某一单元格数据
六、缺失值处理
七、归一化处理
八、排序
九、索引重新编号
十、求均值
十一、矢量化操作(批量操作)
十二、透视表


一、读取csv文件为dataframe


Pandas很好的一点是,可以操作表文件。输出为dataframe格式,这点很nice。 使用pandas.read_csv()读取csv文件,输出为dataframe格式数据。 这里数据data.csv数据集下载自百度地图。

 

import pandas as pd filepath = r'C:/Users/lenovo/Desktop/20180108-百度地图/20180108-百度地图/data.csv' df = pd.read_csv(filepath) #为了方便,我只显示三行,其实结果并不是这样子 print(df)

检测下数据格式

 

#检测下数据格式是否为DataFrame print(type(df))

 

#输出class 'pandas.core.frame.DataFrame

二、 DataFrame数据概况


我们想知道数据如下知识:

  • 展示dataframe前后几条记录

  • 显示dataframe的列名字

  • 查看dataframe的维度情况(几行几列)

2.1展示dataframe前后几行

 

#展示前两条记录(根据需要显示条数) df.head(2) print(df.head(2)) #展示后三条记录 df.tail(3) print(df.tail(3))

2.2展示dataframe列名

 

#展示列名 col_names = df.columns print(col_names) #查看下col_names格式 type(col_names) #将col_names转化为list col_list = col_names.tolist() col_list

三、从dataframe中取列数据


使用dataframe[column_name],返回series格式数据。 series序列数据类似于list,你可以近似等同于list。 只不过返回数据中会多一列index索引。如下面的左侧数字序号

3.1 取一列数据

 

#这里我们一列,如取Name列数据 df['Name'][:5] print(df['Name'][:5])

3.2取多列数据

 

#这里返回的数据还是dataframe格式,为了方便也只显示前几条记录 cols = ['name', 'province_name', 'city_name', 'city_code', 'area', 'addr'] df[cols] print(df[cols])

四、从dataframe中取行数据(记录)


ix[row, col] 中括号中第一个参数row是行参数,你想选择的数据行数。 第二个参数col是列参数,选择你想要的列数据项。

4.1取一行数据

 

#第一行所有数据 df.ix[0, :] print(df.ix[0, :]) #第一行的某几列数据 col = ['Survived', 'Pclass', 'Sex'] df.ix[0, col] print(df.ix[0, col])

2取多行数据

 

#取多行数据,所有列。这里我选择前5行,所有列. #这里是不是很像切片操作。python基础很重要 df.ix[:5, :] print(df.ix[:5, :]) #取多行,某几列 df.ix[:5, col] print(df.ix[:5, col])

五、取某一单元格数据


取第一行第一列。df.ix[0,0] 第三行第七列。df.ix[2,6]

六、缺失值处理


缺失值一般标记为NaN,处理办法如下

 

df.dropna(axis)  默认直接使用df.dropna()  axis=1,按照行进行缺失值处理  axis=0,按照列进行缺失值处理 df.dropna(axis=0,subset)  axis=0,按照列方向处理subset中的列缺失值  subset=[column]   subset含有一个或多个列名的的list

6.1按照行进行缺失值处理

 

#按照列处理缺失值(为显示方便,只显示前5行) df.dropna(axis=0) #对指定列进行缺失值处理 df.dropna(axis=0,subset=['Sex','Age'])

七、归一化处理

数据集中,不同的列的数据可能在不同量级,如果直接进行分析。模型会认为数字大的影响力大,数字小的影响力小。 最终结果可能导致量级小的变量被剔除出模型。因此需要将数据归一化,变成同一量级的数据,这就是归一化操作。 在这里我们只对一列操作下,其余列也需要操作,但为了方便,这里只写一列的归一化处理。

 

处理步骤: 1.选取该列的最大值 max_value = df[col].max() 2.该列所有值均除以max_value

这里要注意,我们会用到pandas特性,矢量化操作,也就是可以对一个列表进行批量同样的操作。

 

#这里我们选Fare列进行归一化,先看下Fare的数据 #为了方便显示,只显示了前10个 df['Fare'] #这里我们选Fare列进行归一化 max_value = df['Fare'].max() max_value #这里我们选Fare列进行归一化 max_value = df['Fare'].max() max_value #归一化,并将数据传入新列new_Fare df['new_Fare']=df['Fare']/max_value df['new_Fare']

八、排序

 

df.sort_values(col,inplace,ascending) col          对col列进行排序 inplace      布尔型值,是否原地操作。             True时,操作结果覆盖掉原数据,原数据被修改             False时,新建一个新数据,原数据未被修改 ascending    布尔型值。升序降序。 False降序,True升序 #对Age列进行降序操作,不修改原始数据 df.sort_values('Age',inplace=False,ascending=False)

九、索引重新

 

将排序后的索引重新排序 df.reset_index(drop) drop    为布尔型值,True表示修改原始数据的索引。                  False保留原始数据索引序列。 df.reset_index(drop=False)

十、求平均值


10.1所有列的平均值信息

 

df.mean()

10.2 单个列的平均值

 

df['Age'].mean()

十一、矢量化操作(批量操作)


一般对如list样式的数据批量操作,需要写循环,但是这样费时费力。 pandas基于numpy,可进行矢量化操作,一行就能完成复杂的循环语句,而且运行效率还很高。

 

#对Age列批量加10 df['Age']+10).head #对Age列批量减20 df['Age']-10

十二、透视表

 

df.pivot_table(index=col1,values=col2,aggfunc='numpy函数')

围绕index参数列,分析各个col2,aggfunc是np函数,当然这里的aggfunc也可以是自定义函数。

 

#分析平均年龄对对生存率的影响。 #0为死亡,1为生存。 #这里我们发现年龄对生存率有影响。 import numpy as np df.pivot_table(index='Survived',values='Age',aggfunc=np.mean) #分析仓位等级对生存率影响。0为死亡,1为生存。 #仓位为一等二等三等分别取值1,2,3 #一等舱最高级。我们发现仓位等级对生存也有影响。 df.pivot_table(index='Survived',values='Pclass',aggfunc=np.mean)

pandas提取html中的表格数据


pandas会在网页中寻找任何符合html表形式的数据,并将其转化WieDataFrame对象作为返回结果

Code


pandas使用方法

 

import pandas as pd #header=1 显示列名;header=0,不显示 pd.read_html(url,header)

实战代码开始

 

import pandas as pd url = "http://hz.house.ifeng.com/detail/2014_10_28/50087618_1.shtml" data = pd.read_html(url,header=1) print(data)

注意啊,这里得到的数据格式是list。

 

[      序号       楼盘名称    城区 签约套数 预定套数 签约面积(㎡)签约均价(元/㎡) 0    1.0        龙湖春江郦城   滨江    18     0    2178.61    23757.0 1    2.0        海威钱塘之星   滨江    13     0    629.55㎡    17398.0 2    3.0        大家运河之星   拱墅    12     0   1052.72㎡    10457.0 3    4.0        保利城市果岭   下沙     8     0    743.05㎡    10457.0    ..   ...           ...  ...   ...   ...        ...        ... 85  86.0        广宇锦绣桃源   拱墅     1     0     86.44㎡    12473.0 86  87.0       景瑞申花壹号院   拱墅     1     0     89.18㎡    21529.0 87  88.0        复地黄龙和山   西湖     0     1         0㎡        0.0 88  89.0         中粮方圆府   下城     0     1         0㎡        0.0 89  90.0          东方铭楼   下沙     0    16         0㎡        0.0 90   NaN         总计签约:  主城区   216    40  21755.55㎡        NaN [91 rows x 7 columns],    2

DataFrame对象


df.to_json()

而只要知道数据存储在DataFrame中,一切都变的简单起来。 比如我很希望数据以json记形式输出,很简单!这只是一行代码的事情。

 

import pandas as pd data = pd.read_html(url,header=1) #data数据是list类型,要先转化为dataframe df = pd.DataFrame(data) df.to_json(orient='records')

df.to_csv()

dataframe对象,还可以将数据输出保存为csv文件

 

import pandas as pd data = pd.read_html(url,header=1) df = pd.DataFrame(data) #encoding为gbk编码,可以在office excel中看中文不乱吗 df.to_csv('data.csv',encoding='gbk')



转自:https://mp.weixin.qq.com/s?__biz=MzI5NDY1MjQzNA==&mid=2247485475&idx=1&sn=81f5a117335181a9e846b84e20bd921a&chksm=ec5ed75edb295e48538eea0e7c28d4bbbffdd3405784d3019db5f65592424ef4a0fab18f73ab&mpshare=1&scene=23&srcid=0208YIogc0ZyLNbYf1ISMvMx#rd
目录
相关文章
|
25天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
59 0
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
20天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
37 2
|
19天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
25 1
|
20天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
21天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
44 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
2月前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
79 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
26天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
32 2