数据分析---pandas(三)

活动地址:CSDN21天学习挑战赛

往期回顾:
数据分析—pandas(一)
数据分析—pandas(二)

数据重塑和轴向旋转

层次化索引

层次化索引是pandas的一项重要功能,它能使我们在一个轴上拥有多个索引

  • series的层次化索引:
import pandas as pd
import numpy as np
s = pd.Series(np.arange(1,10), index = [['a','a','a','b','b','c','c','d','d'], [1,2,3,1,2,3,1,2,3]])
print(s) #类似于合并单元格
>>> 
a  1    1
   2    2
   3    3
b  1    4
   2    5
c  3    6
   1    7
d  2    8
   3    9
dtype: int32


print(s.index)
>>>
MultiIndex([('a', 1),
            ('a', 2),
            ('a', 3),
            ('b', 1),
            ('b', 2),
            ('c', 3),
            ('c', 1),
            ('d', 2),
            ('d', 3)],
           )


print(s['a'])	#外层索引
>>>
1    1
2    2
3    3
dtype: int32



print(s['a':'c']) #切片
>>>
a  1    1
   2    2
   3    3
b  1    4
   2    5
c  3    6
   1    7
dtype: int32

print(s[:,1])	 #内层索引
>>>
a    1
b    4
c    7
dtype: int32

通过unstack方法可以将Series变成一个DataFrame

1

  • Dataframe的层次化索引:
    对于DataFrame来说,行和列都能进行层次化索引。
data = pd.DataFrame(np.arange(12).reshape(4,3), index = [['a','a','b','b'],[1,2,1,2]], columns = [['A','A','B'],['Z','X','C']])
data

2
对行与列进行命名

data.index.names = ["row1","row2"]
data.columns.names = ["col1", "col2"]

3
对与行位置的调整

data.swaplevel("row1","row2") #位置调整

4

set_index可以把列变成索引
reset_index是把索引变成列

  • 取消层次化索引

reset_index()

数据旋转

.T可以直接让数据的行列进行交换

dataframe也可以使用stack和unstack,转化为层次化索引的Series

数据分组,分组运算

GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表

import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\数据分析\movie2.xlsx', index_col = 0)
# 按照电影的产地进行分组
group = df.groupby(df["产地"])
# 可以计算分组后各个的统计量
print(group.mean())

只会对数值变量进行分组运算
我们也可以传入多个分组变量

import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\数据分析\movie2.xlsx', index_col = 0)
print(df.groupby([df["产地"],df["年代"]]).mean()) #根据两个变量进行分组

离散化处理

在实际的数据分析项目中,对有的数据属性,我们往往并不关注数据的绝对取值,只关心它所处的区间或者等级

比如,我们可以把评分9分及以上的电影定义为A,7到9分定义为B,5到7分定义为C,3到5分定义为D,小于3分定义为E。
离散化也可称为分组、区间化。

Pandas为我们提供了方便的函数cut():

pd.cut(x,bins,right = True,labels = None, retbins = False,precision = 3,include_lowest = False)

参数解释:

  • x:需要离散化的数组、Series、DataFrame对象
  • bins:分组的依据,
  • right = True,
  • include_lowest = False,默认左开右闭,可以自己调整。
  • labels:是否要用标记来替换返回出来的数组,
  • retbins:返回x当中每一个值对应的bins的列表,
  • precision精度。
import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\数据分析\movie2.xlsx', index_col = 0)
df["评分等级"] = pd.cut(df["评分"], [0,3,5,7,9,10], labels = ['E','D','C','B','A']) #labels要和区间划分一一对应
print(df)

合并数据集

append

先把数据集拆分为多个,再进行合并

import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\数据分析\movie2.xlsx', index_col = 0)
df_usa = df[df.产地 == "中国台湾"]
df_china = df[df.产地 == "中国大陆"]
print(df_china.append(df_usa))
 #直接追加到后面,最好是变量相同的

merge

pd.merge(left, right, how = ‘inner’, on = None, left_on = None, right_on = None,left_index = False, right_index = False, sort = True, suffixes = (’_x’, ‘_y’), copy = True, indicator = False, validate=None)

concat

将多个数据集进行批量合并

import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\数据分析\movie2.xlsx', index_col = 0)
df1 = df[:10]
df2 = df[100:110]
df3 = df[200:210]
df4 = pd.concat([df1,df2,df3],axis = 0) 
# 默认axis = 0,列拼接需要修改为1
print(df4)

往期回顾:
数据分析—pandas(一)
数据分析—pandas(二)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器你今天学习了没

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值