Python数据分析之Pandas(2)——一些疑问

把 Pandas 对象当做增强版的 NumPy 结构化数据,行和列都能带上标签,而不是简单地整数索引

Pandas有三个基本数据结构:Series、DataFrame 和 Index。

理清”输出“的格式问题:

分清取值和截取表格;
分清浅拷贝和深拷贝。
参考
http://www.chenchen.co.uk/2017/12/01/Pandas_reference_copy.html(写的不错!)

数据聚合与分组操作

Groupby
groupby之后再如何变回DataFrame?

向量化字符串操作

使用 Pandas 的向量化字符串的操作,从而避免通过繁琐的 for 循环来解决问题

写在最后

关于数据处理,之前有写过数据部分,以及整个数据处理的大概流程。现在,更深入地来看一些细节,比如 NumPy(Series) 和 DataFrame 的处理差别。
其实对于一维数组的操作我们处理的维度相应也是一维的:比如获取某个值、某个区间的值,但是怎么都不会超过其维度(一维),顶多选择全部的数组;而对于二维数据的操作,我们处理的维度则不再局限于一维,而是“多维”操作。也就是说可以获取某根轴上的所有数据,这就像在一维数据里面能获取单个元素的值一样轻松,再换句话说,处理一维数据和二维数据的这种转变就类似于从一维的“点”操作变成了二维里的“行/操作”(基本作战单位都变了)——操作对象改变了,操作方式当然也跟着变。
也许理解了这一点,对于groupby的操作理解会更深:
Series中以元素为基本操作单位,而DataFrame中的操作以行和列(即Series)为操作单位。
注意,列=Series

Pandas 基本操作复习:

import pandas as pd 

city = pd.Series(['Beijing', 'Shanghai', 'Wuhan', 'Nanjing', 'Shenzhen', 'Hangzhou', 'Chengdu'])
population = pd.Series([12341312, 53531253, 7457464, 2453534, 5342434, 856352, 424212])
gdp_level = pd.Series(['A+','A++', 'B++', 'B+', 'A++', 'B++', 'B+'])
area_level = pd.Series([5, 5, 5, 4, 4, 4, 4.5])
students_num = pd.Series([4323412, 3312412, 62413124 , 53451224, 2523842, 532942, 543572])

df = pd.DataFrame({'city':city,'population':population, 'gdp_level':gdp_level, 'area_level':area_level, 'students_num':students_num})
df
df[0:3]
df.loc[0:3]  # 这里标签索引之所以成功是因为index是默认数字
df.loc[1,3]   # (报错)这里就证明了loc是按标签索引
df.iloc[0:3]
df.iloc[1,2]   # 按位置选取元素!

困惑之python打印机制

为什么一维的 NumPy 数组打印出来是一行,而 Pandas 的一维 Series 打印结果是一列,到底是 NumPy 特立独行还是?

Python数据分析之NumPy(3)—— NumPy中那些困惑:打印的形状

  1. 字典
    在这里插入图片描述print()似乎将结果进行挤压?
    在这里插入图片描述
    试一试Numpy数组:
    在这里插入图片描述似乎打印前后都没有区别,这也验证了Numpy中默认将一维向量视为行向量。
    在这里插入图片描述Pandas 的 Series 也是没变化的:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值