Series和DataFrame中数据的基本功能:

  1. reindex方法是创建一个新对象,其数据对Series和DataFrame的新索引,它们的主要区别在DataFrame可以对index或columns使用reindex方法。
  • Series的reindex用法
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
frame = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
# frame
# 会根据新索引对原Series的索引进行重新排列,当新索引的值不存在时会以NaN输出
frame1 = frame.reindex(['a', 'b', 'c', 'd', 'f'])
# frame1
frame2 = pd.Series(['blue', 'puple', 'yellow'], index=[0,2,4])
# frame2
frame2.reindex(range(6), method='ffill')  # method在重新索引时用于一些需要插值处理的操作(method='ffill'向前填充值)
frame.reindex(['a', 'b', 'c', 'd', 'e'], fill_value = 0)  #如果不想以NaN填充,可以用fill_value方法来设置
  • 再来看看DataFrame的reindex方法
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
frame = pd.DataFrame(np.arange(9).reshape((3, 3)),....:                      index=['a', 'c', 'd'],....:                      columns=['Ohio', 'Texas', 'California'])# reindex能修改DataFrame的行索引和列索引
frame2 = frame.reindex(['a', 'b', 'c', 'd']) # 若传递一个序列则会重新索引结果
frame2
states = ['Texas', 'Utah', 'California']
frame.reindex(columns=states)  # 列用关键字columns来重新索引
frame.reindex(columns=states).ffill()  # 对DataFrame使用ffill方法,对于新索引的列值还是输出NaN
# 在输出中出现‘标签索引loc方法(书中的'ix'方法已经不能使用了,loc方法等同原ix方法’解释
frame.loc[['a', 'b', 'c', 'd'], states]
  1. 丢弃指定轴上的项

丢弃某条轴上的一个或多个项只要有一个索引数组或列表即可。采用drop方法返回在指定行轴或列轴删除指定值的新对象。

  • 在Series中方法drop只能对一维组进行对行索引的删除
frame = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
# frame
frame_drop = frame.drop('c')  # drop('x')方法返回一个在指定行轴上删除指定值x的新对象
# frame_drop
# inplace保证修改Series和DataFrame的大小或形状时会在在正确的地方修改对象,从而输出新对象
frame.drop('c', inplace=True)
# frame
  • 在DataFrame中方法drop可以删除任意轴上的索引值

  • >可以 通过传递axis=数字axis='columns’来删除列的值

 data = pd.DataFrame(np.arange(16).reshape((4, 4)),.....:                     index=['Ohio', 'Colorado', 'Utah', 'New York'],.....:                     columns=['one', 'two', 'three', 'four'])data# 对列轴进行指定删除data.drop(['Utah', 'one'])  # 以标签的形式对列表中的行名删除对应值data.drop('four', axis=1)  # 通过传递axis=1来说明删除具体某一项对象列值data.drop(['two', 'four'], axis='columns')  # 通过传递axis=columns来说明是要删除列值# 对行轴进行指定删除data.drop('Ohio', axis='index')data.drop(['Utah', 'New York'])  # 以标签的形式对列表中的列名删除对应值

np.arange()和 range()的用法及区别:
1.a = np.arange()

1.一个参数是默认起点0,步长为1
a = np.arange(5) #输出:[0 1 2 3 4 5]
2.两个参数是默认步长为1
a = np.arange(3,6) #输出[3 4 5]
3.三个参数则是起点为0,终点为3,步长为0.5
a = np.arange(0, 3, 0.5) # 输出[ 0. 0.5 1. 1.5 2. 2.5]

2.range(start, stop[, step])

start为开始,stop为结束和step为步长

3.arange()是Numpy中的函数,range()则是python自带函数,它们主要区别是arange支持步长为小数而arange不支持、range返回的是object而arange返回的是ndarray类型,都可以用于迭代

  1. 索引、选取、过滤操作
  • 对于Series的单个索引和切片处理
frame = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
#frame
# frame[...]类似Numpy数组的索引(区别在于Series的索引值不只是整数)
frame['b']
frame[3]
frame[2:4] # 对Series进行切片处理(与普通切片不同的地方在其末端在所切片中并输出)
frame[frame < 3]
frame['a':'c']
frame['a', 'c'] = 5  # 对于切片的相对应部分进行设置
#frame
  • DataFrame进行索引就是获取对象的一个列或多个列
data = pd.DataFrame(np.arange(16).reshape((4, 4)),index=['age', 'year', 'Utah', 'New York'],columns=['one', 'two', 'three', 'four'])
data['one']  # 用单个值来获取
data[['one', 'three', 'four']]  # 用序列来获取
data[:2]  # 获取前两行
data[2:]  # 获取后两行
data[data['four'] > 5]  # 返回满足条件的新对象
data < 5  # 通过对标量的比较运算来索引(输出的h是bool值)
data[data < 5] = 22  # 对于小于比较运算的值都改为22
# data
  1. loc和iloc的使用
  • loc[行索引, 列索引]的用法
# 对DataFrame进行标签索引
data = pd.DataFrame(np.arange(16).reshape((4, 4)),index=['age', 'year', 'Utah', 'New York'],columns=['one', 'two', 'three', 'four'])
data.loc['age', ['two', 'three']]  # 选取标签为单行多列
data.loc[:'Utah','two']  # loc进行一个标签或多个标签切片
  • iloc[行序, 列序]
data.iloc[2, [3, 0, 1]]  # 对于行为2,列序[3, 0, 1]进行索引
data.iloc[3]  # 单独对行3进行索引
data.iloc[:, :3][data.three>5]  # iloc对于单个或多个标签的索引
  1. 整数索引

pandas处理整数和python内置函数索引不同。
若pandas中index与columns整数值一样时,索引frame[x]会产生歧义而发生错误
从而引入非整数索引来消除歧义
索引数据最好是要使用loch和iloc

  1. 算数运算和数据对齐

andas可以对不同的索引的对象进行算术运算。

  1. 若frame1+frame2中存在不同索引对,则返回的结果是两个对象的索引并集
  2. 数据对齐时产生对于数据不重叠的索引都是返回缺失值NaN。
  3. 对象相加时若没有相同的行或列标签,则都返回NaN值(DataFrame对齐操作可以同时对行和列操作)
  1. 在算术方法中填充值

在对象进行算术运算时出现索引不重叠返回的都是NAN值,若不想要以NaN值输出而引入fill_value参数(frame.方法(frame1, fill_value=xx))

  1. 排序sort和排名rank

sort是对行或列索引进行排序(升序、降序或自定义顺序)
rank是对行或列索引进行排名(从高到低、从低到高或自定义顺序排名)一般产生新的名次序列。

1. 排序
  • sort_index():按索引排序
sort_index(axis=1,ascending=False)
axis:行索引或列索引,默认为列索引排序,axis = 1或axis='index' 表示对行进行排序;
ascending:排序方式,默认升序,ascending=False 表降序,ascending=True表示升序。
obj = pd.Series(range(4), index=['d', 'a', 'b', 'c'])
obj.sort_index()  # 对索引index进行排序frame = pd.DataFrame(np.arange(8).reshape((2, 4)),.....:                      index=['three', 'one'],.....:                      columns=['d', 'a', 'b', 'c'])
frame.sort_index()
frame.sort_index(axis='columns')  # 对于列进行排序
# 数据默认是按升序排序的
frame.sort_index(axis=1, ascending=True)  # 对于ascending=False是降序排序
  • sort_values():按数值排序
    sort_values(ascending=False, by=‘b’)by:排序的依据,by=‘b’ 表示根据b列的数据进行排序;ascending:排序方式(True为升序、False为降序)。
obj = pd.Series([4, 7, -3, 2])
obj.sort_values()  # 按值进行排序
obj = pd.Series([4, np.nan, 7, np.nan, -3, 2])
obj.sort_values() # 任何缺失值都会默认放到Series一维数组的末尾
frame = pd.DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})
frame.sort_values(by='b')  # 根据某个值来排序,用到by='xx'
frame.sort_values(by=['a', 'b'])  # 根据多个列进行排序,用到by=['xx', 'xxx']
2. 排名rank():对数据进行排名

df.rank(ascending=False, method=‘max’)
ascending:排名方式(True为升序、False为降序);
method:排名方式,包括:“average”、“min”、“max”、“first”、“dense”。(默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系)

方法 说明
average 默认在相等分组中为各个值分配平均排名
min 使用整个分组最小排名
max 使用整个分组最大排名
fist 按照原始数据中出现的顺序排名
obj = pd.Series([7,-5,7,4,2,0,4])
obj.rank()  # 输出排名序号
# 也可以根据值在原数据中出现的顺序给出排名:
obj.rank(method='first')
obj.rank(ascending=False, method='max')  # 降序进行排名
frame = pd.DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1],'c': [-2, 5, 8, -2.5]})
frame.rank(axis='columns')  #DataFrame可以在行或列上计算排名
  1. 重复标签的轴索引

对于带有重复值的索引,数据选取的行为将会有所不同。如果索引对应多个值则输出一个Series(DataFrame),索引单个值则输出一个标量。

汇总和计算描述统计

# 创建一个简单的DataFrame
df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],[np.nan, np.nan], [0.75, -1.3]],index=['a', 'b', 'c', 'd'],columns=['one', 'two'])
方法 作用
df.sum()也可以传入axis=1(行)或axis=‘columns’(列) 返回一个含有列和的Series
df.mean(axis=‘columns’, skipna=False) NA值会自动被排除,除非整个切片(这里指的是行或列)都是NA (通过skipna选项可以禁用该功能)
df.idxmax() 间接统计(比如达到最大或最小值的索引)
df.cumsum() 累加
df.describe() 用于一次性产生多个汇总统计
  • 相关系数和协方差
方法 作用
corr() 用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数(矩阵)
cov() 用于计算协方差(矩阵)
corrwith() 计算其列或行跟另一个Series或DataFrame之间的相关系数
  • 唯一值、值相关计算和成员资格

1.unique()得到Series中的唯一值数组

obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
uniques = obj.unique()  # 对结果再次进行排序(uniques.sort())
# uniques
# 输出为
array(['c', 'a', 'd', 'b'], dtype=object)

2.value_counts用于计算一个Series中各值出现的频率

obj.value_counts()  # Series是按值频率降序排列的
# 输出为
c    3
a    3
b    2
d    1
dtype: int64

3.value_counts可用于任何数组或序列

pd.value_counts(obj.values, sort=False)
# 输出为
a    3
b    2
c    3
d    1
dtype: int64

4.isin用于判断矢量化集合的成员资格,可用于过滤Series或DataFrame列中数据的子集

mask = obj.isin(['b', 'c'])
# mask
# 输出为
0     True
1    False
2    False
3    False
4    False
5     True
6     True
7     True
8     True
dtype: bool
obj[mask]  # 返回指定索引的数据
0    c
5    b
6    b
7    c
8    c
dtype: object

5.Index.get_indexer方法是给你一个索引数组,从可能包含重复值的数组到另一个不同值的数组

to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])unique_vals = pd.Series(['c', 'b', 'a'])pd.Index(unique_vals).get_indexer(to_match)  # 从to_math映射到unique_vals返回对应位置# 输出为
array([0, 2, 1, 1, 0, 2])

python—数据分析(二)相关推荐

  1. Python数据分析(二): Numpy技巧 (4/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 第一部分: http ...

  2. python数据分析二一:图形化显示海地地震危机数据

    知识点回顾 zip() >>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>&g ...

  3. python绘制条形图 中文横坐标_[Python数据分析]二、matplotlib绘制条形图

    本节目标:绘制横着放的条形图 绘制竖着放的条形图 在同一图中,绘制多次条形图做对比 练习1 假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该 ...

  4. python数据分析(三)——pandas缺失值处理

    系列文章目录: python数据分析(一)--series和读取外部数据 python数据分析(二)--DataFrame 缺失值处理 一.数据缺失 一.数据缺失 数据缺失通常有两种情况: 一种就是空 ...

  5. Python 数据分析三剑客之 Pandas(二):Index 索引对象以及各种索引操作

    CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...

  6. Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  7. Python 数据分析三剑客之 NumPy(二):数组索引 / 切片 / 广播 / 拼接 / 分割

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  8. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 参考文章: (1)[Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 (2)https: ...

  9. python数据分析入门【二】 --- 数据处理

    python数据分析入门[二] - 数据处理 上一章内容python数据分析入门[一] - DataFrame & Series 下一章内容python数据分析入门[三] - 数据分析 文章目 ...

最新文章

  1. 用在数据科学上的 Python:你可能忘记的 8 个概念
  2. JavaScript getFullYear() 方法
  3. 期权数据 获取_我如何免费获得期权数据
  4. 支付宝「集五福」的阳谋
  5. c++date数据类型_PLC编程设涉及到的数据类型了解一下
  6. centos下openfire安装(转)
  7. mysql-定时调用存储过程
  8. 15muduo_base库源码分析(六)
  9. 「AtCoder Grand018A」Getting Difference(GCD)
  10. Lean Startup实战
  11. 用html制作微信头像,姓氏头像怎么弄?微信制作个人姓氏头像的方法
  12. java tracert_tracert详解
  13. 墨者 SQL手工注入漏洞测试(MySQL数据库)
  14. List of file signatures
  15. Android应用商店的软件安全性到底如何?
  16. lpfs存储服务器怎样维护,ipfs云节点存储服务器
  17. vivado batch mode
  18. 如何使用 Diago 诊断 Go 程序中的 CPU 和内存使用情况
  19. 模型计算算力_8核人工智能开源主板_基于 BITMAIN AI 计算模组_3.5寸
  20. FL Studio21最新版数字音频工作站(DAW)

热门文章

  1. python 利用win32com进行数据透视表绘制
  2. SSM实现的酒店管理系统
  3. 盘点web常见页面错误代码及解决方法
  4. Win10 部分软件画面显示不全新解决方法
  5. 【项目总结】站群cms系统
  6. 脚本实现扫描局域网IP以及查看arp缓存表
  7. 关于NETFPGA-10G敬告国内朋友
  8. html列表横向变纵向,word横向表格变竖向 word文档怎么把横向表格变成竖向
  9. ASO优化之如何进行榜单优化
  10. 【HZHE003】黄子涵学习Echarts