关于Pandas的总结,就数据类型而言大体分三块Series,DataFrame,Categorical Data
其次是表和一些函数的记录
Series
![1dd5eeb7cc8eb369c7cbc6d6bb00693c.png](https://i-blog.csdnimg.cn/blog_migrate/410985af0e18af4a1770a67f2c8a9594.jpeg)
DataFrame
![2d5044cec86d56150e92bc042a43c54c.png](https://i-blog.csdnimg.cn/blog_migrate/b1cb86f27a197facfc26a122763ebb9c.jpeg)
Categorical Data
定义
用于表示统计学里有限且唯一性数据集
df['初始评级'] = df['初始评级'].astype('category')
- 修改fruit列由Series category类型
- 改变了其数据类型已不是Series而是category类型,该列存储所需的内存使用容量大大降低。
创建
. astype('category')
- 可以将某dataframe的某列直接转为Categorical Data型的数据
. pandas.Categorical()
直接创建Categorical
- val =["A", "B", "C","D","E","F"]
- cat = pd.Categorical(val)
- val是python的列表
- cat则是categorical data数据类型
- 有categories和codes属性
- 分别表示数据存储时的分类和编码
- 用categoris和codes生成Categorical Data
- categories要求唯一、有限,codes可以任意定义,cat变量是基于列表val创建的一个categorical data数据,同时cat有categories和codes属性
- Categorical Data的实例对象调用take函数
- 一个categorical的实例对象cat可以传入"要查询"的编码表codes给take函数获得其对应的值,即给出编码找对应的分类
- pd.Categorical类调用take函数,这时形参有两个,一个是pd.Categorical的实例对象cat,另一个是编码表
DataFrame里插入Categorical Data
- cat = pd.Categorical(column)
- df["column"] = cat
- pandas.Categorical创建的Categorical data数据插入到DataFrame
函数
修改Categorical的categories
- 赋值
- df.column.values.categories = ["A", "B", "C","D","E","F"]
- set_categories()
- rename_categories
- df.column.values .rename_categories( ["A", "B", "C","D","E","F"],inplace = True)
增加categories
- add_categories
- df.column.values.add_categories("AAA", inplace = True)
#AAA为安全标
删除categories
- df.column.values.remove_categories("AB", inplace = True)
删除未使用的categories
- df.column.cat.remove_unused_categories(inplace = True)
value_counts函数
- df.column.value_counts()
XMind: ZEN - Trial Version
表
![9f9cac06bf6897938b2d55af12e78756.png](https://i-blog.csdnimg.cn/blog_migrate/86597c3af8fae4642bea841f331b7e60.jpeg)
Notes:
- crosstab与aggfunc
#aggfunc若指定,需要配置values
#[aggfunc cannot be used without values.]
pd.crosstab(lc['借款期限'],lc['借款类型'],values = lc['认证信息汇总'],margins=True,aggfunc=sum)
结果如下:
借款类型 APP闪电 其他 普通 电商 All
借款期限
1 0 40 0 2 42
2 0 799 0 3 802
3 674 1021 254 44 1993
4 0 94 0 0 94
5 0 85 0 0 85
6 33777 27471 22228 1010 84486
7 0 440 799 0 1239
8 0 1159 693 0 1852
9 0 1976 8793 0 10769
10 0 3535 1936 1 5472
11 0 3031 2320 0 5351
12 77628 57143 80550 9 215330
15 0 31 0 0 31
17 0 1 0 0 1
18 0 367 0 0 367
20 0 1 0 0 1
21 0 2 0 0 2
24 0 106 530 0 636
All 112079 97302 118103 1069 328553
2.访问/索引方式栗子
rz = ['手机认证','户口认证','视频认证','学历认证','征信认证','淘宝认证']
type(lc[rz]:1) #pandas.core.frame.DataFrame
lc[rz].shape[0] #328553
#查看数据有多少行,同时可用作分母,通过for循环实现子图绘制
#lc[rz].iloc[:,:3] #索引前3列
#lc[rz].columns #可通过列名索引访问
![b64b14bd2a584eae21e5a97168291dd5.png](https://i-blog.csdnimg.cn/blog_migrate/7a3268f7de85aca0642dd20a5b2eb6e9.png)
之前容易漏掉部分,以借款金额指标为例,区别如下,
lc['jkje_cut'] #Category
================================================
0 10000-80000
1 8000-10000
2 10000-80000
3 10000-80000
4 10000-80000
...
328548 2000-3000
328549 5000-8000
328550 2000-3000
328551 5000-8000
328552 3000-4000
Name: jkje_cut, Length: 328553, dtype: category
Categories (11, object): [<500 < 500-1000 < 1000-2000 < 2000-3000 ... 8000-10000 < 10000-80000 < 80000-300000 < ≥300000]
多一个[]
lc[['jkje_cut']] #DataFrame
================================================
jkje_cut
0 10000-80000
1 8000-10000
2 10000-80000
3 10000-80000
4 10000-80000
... ...
328548 2000-3000
328549 5000-8000
328550 2000-3000
328551 5000-8000
328552 3000-4000
328553 rows × 1 columns
参考:
http://shzhangji.com/cnblogs/2017/09/30/pandas-and-tidy-data/ ⭐
数据处理-melt函数-可视化
python,pandas模块,Melt函数处理数据,透视表格,宽数据变成长数据
Pandas中DataFrame数据合并、连接(concat、merge、join)之merge - wqbin - 博客园
CSDN-专业IT技术社区-登录