python pandas

Series and DataFrame

框架结构
在这里插入图片描述

一、Series

a = Series([1,5,3,2,6]) 创建数组 索引在左数值在右

0    1
1    5
2    3
3    2
4    6
dtype: int64


--------------------------------
a = Series([1,5,3,2,6],index =['a','b','c','d','e']) 指定索引

a    1
b    5
c    3
d    2
e    6
dtype: int64

a.index 查看索引
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
a.values 查看值
array([1, 5, 3, 2, 6], dtype=int64)
--------------------------------
a['d']  索引和值一一对应
2
a[2]
3
--------------------------------
series计算

a[a<6]
a    1
b    5
c    3
d    2
dtype: int64

a*2

a     2
b    10
c     6
d     4
e    12
dtype: int64

-------------------------
w = {
    '张三':92,
    '李四':89,
    '王五':78,
    '赵六':67
}

t = Series(w) 创建series数据
张三    92
李四    89
王五    78
赵六    67
dtype: int64
----------------------
t = Series(w)
t.index.name='nname'   给series定义名称增加可读性

nname
张三    92
李四    89
王五    78
赵六    67
dtype: int64

二、dataframe

q = {
    'name':['张三','李四','王五','小明'],
    'sex':['89','56','78','64'],
    'city':['北京','上海','天津','南京'],
    'year':['2001','2016','2019','2016']
}
i = DataFrame(q)     数据有行索引和列索引 

name sex	city	year
0	张三	89	北京	2001
1	李四	56	上海	2016
2	王五	78	天津	2019
3	小明	64	南京	2016
--------------------------------
i = DataFrame(q,columns=['name','city','sex','year']) 通过行索引排序
	name	city	sex	year
0	张三	北京	89	2001
1	李四	上海	56	2016
2	王五	天津	78	2019
3	小明	南京	64	2016

--------------------------------
e = {
    'sex':{'张三':'89','李四':'78','王五':'65'},
    'city':{'张三':'北京','李四':'上海','王五':'天津'}
}
s = DataFrame(e)    嵌套字典数据也可以创建dataframe数据

sex	city
张三	89	北京
李四	78	上海
王五	65	天津
------------------------------
s.values           可以将dataframe转换为二维数组
array([['89', '北京'],
       ['78', '上海'],
       ['65', '天津']], dtype=object)

索引对象不可进行修改

s.columns[0]='erer'   修改dataframe columns索引 则报错
    
TypeError                                 Traceback (most recent call last)
<ipython-input-71-ee15e91da0ed> in <module>
----> 1 s.columns[0]='erer'

G:\Anaconda\lib\site-packages\pandas\core\indexes\base.py in __setitem__(self, key, value)
   3908 
   3909     def __setitem__(self, key, value):
-> 3910         raise TypeError("Index does not support mutable operations")
   3911 
   3912     def __getitem__(self, key):

TypeError: Index does not support mutable operations


pandas索引操作

主要介绍 dataframe
set_index :设置行索引;也可以将列数据作为行索引。

q = {
    'name':['张三','李四','王五','小明'],
    'sex':['89','56','78','64'],
    'city':['北京','上海','天津','南京'],
    'year':['2001','2016','2019','2016']
}
i = DataFrame(q)
i.set_index('name')

	sex	city	year
name			
张三	89	北京	2001
李四	56	上海	2016
王五	78	天津	2019
小明	64	南京	2016

dataframe 排序之后索引会一起发生改变
解决办法:使用reset_index函数

q = {
    'name':['张三','李四','王五','小明'],
    'sex':['89','56','78','64'],
    'city':['北京','上海','天津','南京'],
    'year':['2001','2016','2019','2016']
}
i = DataFrame(q)    正常排序
	name	sex	city	year
0	张三	89	北京	2001
1	李四	56	上海	2016
2	王五	78	天津	2019
3	小明	64	南京	2016

i2=i.sort_values(by='sex')  对sex排序
i2
	name	sex	city	year
1	李四	56	上海	2016
3	小明	64	南京	2016
2	王五	78	天津	2019
0	张三	89	北京	2001

i3=i2.reset_index()   索引重排 可以跳过直接进行下一步
i3
	index	name	sex	city	year
0	1	李四	56	上海	2016
1	3	小明	64	南京	2016
2	2	王五	78	天津	2019
3	0	张三	89	北京	2001

i3=i2.reset_index(drop=True)  删除原索引 
i3

name	sex	city	year
0	李四	56	上海	2016
1	小明	64	南京	2016
2	王五	78	天津	2019
3	张三	89	北京	2001

dataframe选取列:

q = {
    'name':['张三','李四','王五','小明'],
    'sex':['89','56','78','64'],
    'city':['北京','上海','天津','南京'],
    'year':['2001','2016','2019','2016']
}
i = DataFrame(q)
	name	sex	city	year
0	张三	89	北京	2001
1	李四	56	上海	2016
2	王五	78	天津	2019
3	小明	64	南京	2016

三种选取方式   不能用用切片的方式选取列
i['name']    选取
i.name       选取
i[['name','sex']]  选取

选取行

q = {
    'name':['张三','李四','王五','小明'],
    'sex':['89','56','78','64'],
    'city':['北京','上海','天津','南京'],
    'year':['2001','2016','2019','2016']
}
i = DataFrame(q)
	name	sex	city	year
0	张三	89	北京	2001
1	李四	56	上海	2016
2	王五	78	天津	2019
3	小明	64	南京	2016

选取方式:
可以进行切片:
i[0:2] 
如果name为索引则可以:i['张三':'李四']

获取单独几行

使用loc 、iloc
loc :按行索引标签选取
iloc:按行索引位置选取

i2.loc['张三']

sex       89
city      北京
year    2001
Name: 张三, dtype: object
---
i2.loc[['张三','王五']]

	sex	city	year
name			
张三	89	北京	2001
王五	78	天津	2019

-------------------------------------------
i2.iloc['2']
i2.iloc[['1','2']]

选取部分行和列:

使用 ix
能同时限制行和列

	sex	city	year
name			
张三	89	北京	2001
李四	56	上海	2016
王五	78	天津	2019
小明	64	南京	2016

i2.ix[['张三','王五'],0:2]  限制行和列
i2.ix[:,['sex','year']] 不限制行数但 值输出 指定两列
i2.ix[[1,3],:]

布尔选择

可以使用:(!=),(-),(&),(|)


sex	city	year
name			
张三	89	北京	2001
李四	56	上海	2016
王五	78	天津	2019
小明	64	南京	2016
----------
i2['sex']=='56'
name
张三    False
李四     True
王五    False
小明    False
Name: sex, dtype: bool
---
i2[i2['sex']=='56']
	sex	city	year
name			
李四	56	上海	2016
-------
i2[(i2['sex']=='56')&(i2['city']=='上海')]
	sex	city	year
name			
李四	56	上海	2016

函数应用和映射:
map :经函数套用在series的每个元素中
apply:将函数套用在dataframe的行与列上
applymap:将函数套用在dataframe的每个元素上
待补充


排序:

sort_index 对索引进行排序 默认升序
sort_index(ascending=False) 降序

sort_values 对值进行排序 对列进行排序
sort_values(by=’ ‘) 默认升序
sort_values(by=’ ',ascending=False) 降序


汇总

dataframe 函数中 sum函数可以对每列汇总
df.sum()
df.sum(axis=1) 对行进行汇总
df.describe()对每个数值型列进行统计 显示最大,最小,和,百分数等。


唯一值和值计数:

对于series和dataframe都适用:
unique 可获得数组中的唯一值;
value_counts()可统计每个值出现的次数

r = Series(['a','b','b','c','a','d'])
r.unique()
array(['a', 'b', 'c', 'd'], dtype=object)
---
r.value_counts()
a    2
b    2
c    1
d    1
dtype: int64


pandas可视化

sersies创建点线图和柱状图
.plot() 点线
.plot(kind=‘bar’) 柱状

在这里插入图片描述
在这里插入图片描述

dataframe 点线图和柱状图-----------------------------------------------
df.plot() 点线图
df.plot(kind=‘bar’)柱状图
df.plot(kind=‘bar’,stacked=True,alpha=0.7) 堆积柱状图
alpha 设置颜色透明度
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值