数据分析_04_pandas
pandas
处理除了数值型的数据之外的其他类型数据
常用数据类型
- Series 一维数据,带标签的数组
- DataFrame 二维数据
创建Series数组
pd.Series([1,23,2,2,1], index=list(“abcde”))
也可以用字典转换到Series
转变数值类型
t2.astype(float)
切片和索引
获取值
可以是键,也可以是下标
例如:t3[“age”], t3[2]
取不连续的几行
t[ [“age”,“tel”] ]
布尔索引
t[t>10]
所有下标(键)
xx.index
所有值
xx.values
读取外部数据
读取csv
df = pd.read_csv("./dogName2.csv")
还可以读很多格式的文件
比如html, json, sql…
对于没有对应功能的格式或者文件,例如Mnogodb,可以先存到pandas中,再用一系列(DataFrame)操作
DataFrame
二维,Series容器
命名索引名称
pd.DataFrame(np.arange(12).reshape(3,4),
index=list(“abc”),
columns=list(“WXYZ”))
字典传入DataFrame
- 列表里有多少数据表示DataFrane有多少行
- 也可以用存字典的列表传入
基础属性
行坐标
t2.index
列坐标
t2.columns
所有的值(存了一个个对象的数组)
t2.values
形状(几行几列)
t2.shape
每一列是什么类型
t2.dtypes
数据的维度
t2.ndim
显示头部几行
df.head(3)
显示尾部几行
df.tail(3)
一些信息,行数、列数、列索引、列类型…
df.info()
统计数字列的情况,平均值、方差…
df.describe()
消除不想要的数据(列)
从大的数据中通过for循环获得一小部分列,存在另外一个列表中
按某列的顺序排序
df.srot_values(by=“Count_AnimalName”,
ascending=False(降序))
取行或者列
df[:20]
#前20行
df[‘Row_Labels’]
#取列索引
通过标签索引行数据
t3.loc[字符串或者字符串列表,字符串或者字符串列表]
例如:t3.loc[‘A’,:]
注意:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGlNBFFP-1611656236484)(04_pandas.assets/image-20210123111351787.png)]
通过位置索引行数据
t3.iloc[[0,2,[2,1]]
布尔索引
df[ df[“count”] > 800
t3[ pd.notnull( t3[‘W’] ) ]
字符串方法
contains
len
lower, upper
replace
split
例如:
df[‘info’].str.split(’/’).tolist()
#用/切割一行行数据,然后保存到一个大列表中
缺失数据处理
判断数据是否为NaN
pd.isnull(df)
pd.notnull(df)
处理方式
- 删除NaN所在的行列dropna(axis=0,how=‘any’,inplace=False)
#0删除行,all表示当前行全部为NaN才删;any表示有1个为NaN就删,inplace表示原地替换将矩阵换成之后的结果
填充数据。t2.fillna(0)
t2.fillna(t2.mean())
#将平均值填充到所有列的NaN中来
只填充一列
t2[“age”] = t2[“age”].fillna(t2[“age”].mean())
在numpy中含有NaN的列的平均值为Nan
在pandas中含有NaN的列的平均值会忽略NaN
处理为0的数据(0是否没有意义):
t[t==0] = np.nan
获得全部导演(名字的列表)的数量
len(df[“Director”].unique())
获得多个电影的演员人数:
展平放在一个列表中,再利用集合set唯一化
- 获得最大值、最小值、、和它们的位置
例子:统计电影类型
数据合并
join
默认把行索引相同的数据合并到一起
merge
按照指定的列把数据按照一定的方式合并到一起
df1.merge(df3,on=“a”,how=“inner”)
how:
inner 交集
outer 并集,NaN补全
left 左边为准,NaN补全
right 右边为准,NaN补全
分组和聚合
分组
df.groupby(by=“columns_name(Country)”)
返回DataFrameGroupBy对象
可以进行遍历
for i.j in grouped:
print(i,j)
按“国家”分类,每一个都为元组,前面i是“国家”,后面j是DataFrame(当前数据全部为该“国家”的DataFrame)
元组(索引(分组的值),分组之后的DataFrame)
按照多个条件进行分组
PPT134页描述详细
前面两列一起为索引(复合索引),后面为数据,类型为Series
要想返回DataFrame类型,只需要在加一个[]方括号,例如df[[“Brand”]]
PPT135页
索引的方法和属性
获取index
grouped1.index
指定index
df1.index = [“a”,“b”]
重新设置index
df.reindex(list(“abcdef”))
#不存在的会设置为NaN,相当于对其取行
指定某一列作为index
df1.set_index(“a”,drop=False(False为保留a列))
返回index的唯一值
df.set_index(“Country”).index.unique()
可以是复合索引
例子
交换(前后两个)索引的位置
d. swaplevel()
聚合
统计全部国家的公司个数
grouped[“Brand”].count()
可以取特定列统计(例如Brand,也可以是Country,没有NaN)
时间序列
生成一段时间范围
pd.data_range(start=None,end=None,periods=None,freq=‘D’)
- 常见的频率的缩写
10D:表示10天
时间字符串转化为时间序列(字符串转类型对象)
df[‘timeStamp’] = pd.to_datatime(df[‘timeStamp’],format="")
#format可以帮助格式化时间字符串(可以查阅python datetime),比如包含中文
重采样
指的是将时间序列从一个频率转化为另一个频率进行处理的过程
- 将高频率数据转化为低频率数据为降采样
- 低频率转化为高频率为升采样
pandas可以用resample方法实现频率转化
t.resample(“M”).mean()
#按月份取平均值
t.resample(“10D”).count()
#10天计数
时间段
periods = PeriodIndex(
year=data[‘year’],
month=data[‘month’],
day=data[‘day’],
hour=data[‘hour’],
freq=‘H’)
#功能:把分开的时间字符串通过periodIndex方法转化为pandas的时间类型
之后可以添加1列到数据中
指的是将时间序列从一个频率转化为另一个频率进行处理的过程
- 将高频率数据转化为低频率数据为降采样
- 低频率转化为高频率为升采样
pandas可以用resample方法实现频率转化
t.resample(“M”).mean()
#按月份取平均值
t.resample(“10D”).count()
#10天计数
时间段
periods = PeriodIndex(
year=data[‘year’],
month=data[‘month’],
day=data[‘day’],
hour=data[‘hour’],
freq=‘H’)
#功能:把分开的时间字符串通过periodIndex方法转化为pandas的时间类型
之后可以添加1列到数据中
数据分析_04_pandas相关推荐
- Velodyne VLP-16激光雷达数据分析
Velodyne VLP-16激光雷达数据分析 Velodyne VLP-16激光雷达保持了 Velodyne 在 LiDAR 中的突破性重要功能:实时收发数据.360 度全覆盖.3D 距离测量以及校 ...
- 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
目录 物联网设备数据分析 设备监控数据准备 创建Topic 模拟数据 SQL风格 DSL风格 物联网设备数据分析 在 ...
- 2021年大数据Spark(二十八):SparkSQL案例三电影评分数据分析
目录 案例三:电影评分数据分析 代码实现 Shuffle分区数 案例三:电影评分数据分析 使用电影评分数据进行数据分析,分别使用DSL编程和SQL编程,熟悉数据处理函数及SQL使用,业务需求说明: 对 ...
- Excel的数据分析—排位与百分比
Excel的数据分析-排位与百分比 某班级期中考试进行后,按照要求仅公布成绩,但学生及家长要求知道排名.故欲公布成绩排名,学生可以通过成绩查询到自己的排名,并同时得到该成绩位于班级百分比排名(即该同学 ...
- python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...
此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...
- ESI计算机排名2021年01月,喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析!...
原标题:喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析! 2021年5月13日,科睿唯安发布了<2021年5月ESI中国高校排行榜>. 一.计算机科学专业 1.清华大 ...
- python数据分析要学什么_python数据分析学什么?python数据分析入门
有很多没有基础的新手想学习python数据分析,却在纠结python数据分析难不难学?下面万古网校小编给大家整理了资料,为各位分享! 1.python难不难? Python可以说是目前比较主流而且易学 ...
- python数据分析实训大纲,数据分析大赛考纲:(二)Python数据分析应会部分
1.1. Numpy库的使用 1.1.1. Numpy数组的创建 1. 了解Numpy中ndarray数组对象的性质和特点: 1. 掌握通过array()函数创建Numpy数组的方法,会将Python ...
- v-model无法对返回的数据进行填写_学会数据分析思维,学会透过事物看本质
这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变. 举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知 ...
最新文章
- 从opensuse 12.3 升级到 opensuse13.1体验
- Exchange 2013部署系列之(十)信息权限保护RMS和Exchange 2013的整合
- Java的表白程序_java表白程序
- 压力测试+webbench+ab+tsung+siege
- kali如何安装netcat_Netcat常用方法汇总
- js怎么设置z index.html,HTML5 Canvas set z-index
- IPv6名称到地址的转换函数getaddrinfo()详解
- SQL Server2008优化之SET STATISTICS开关
- Pandorabox等类OpenWrt的路由器 实现后端设备接入IPV6(中继代理+NAT)
- 华为笔试题库及性格测试
- 在win10下,xilinx公司FPGA下载器上,指示灯不亮,设备管理器中驱动显示正常,下载器无法识别到期间
- matlab预测误差,Matlab的神经网络预测误差比较大,该怎样调整
- Unity实现将图片上传到服务器功能
- 矩阵论极简笔记(1):如何降维度打击
- 手游测试之《弱网测试》
- MySQL 5.6.21下载安装之安装篇(二)
- Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
- windows系统C盘越来越大怎么办(包括win10)
- 又一个!左手手机,右手汽车,为啥手机厂商都扎堆造汽车?
- python面向对象-2
热门文章
- RabbitMQ topics
- 升级Xcode 11.2 后报错: Multiple commands produce 的解决办法
- 地理信息系统的发展趋势——网格GIS
- Chrome浏览器保存微信公众号文章中的图片
- 【BUG记录】Idea spring boot项目中target中没有同步更新最新目录文件及资源
- h5 实现扫码二维码及条形码(js多种实现方式)
- 阿里云大数据工程师ACP认证例题
- 微信小程序报错“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.js...“
- 英文投稿过程中的十种状态
- 电脑黑屏显示重新连接服务器,电脑黑屏怎么处理(电脑上显示器黑屏的处理方法)...