pandas基本功能
import pandas as pd import numpy as np
pandas基本功能
(1)数据文件读取/文本数据读取
(2)索引、选取和数据过滤
(3)算法运算和数据对齐
(4)函数的应用和映射
(5)重置索引
1、pandas:数据文件读取
通过pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv,主要可以读取文本类型的数据
# 读取csv文件:表格型的文本数据 df=pd.read_csv("text.csv",encoding='gbk')df
名字 | 数学 | 语文 | |
---|---|---|---|
0 | Dkd | 25.1 | 98 |
1 | Hff | 26.0 | 90 |
2 | Zfs | 27.0 | 87 |
3 | Lghgd \t | 28.0 | 97 |
#读取text文件,sep指定分隔符,不读取头部数据 。默认使用逗号的形式分割 df1=pd.read_csv("text1.txt",encoding='gbk',sep=' ',header=None)df1
0 | 1 | 2 | |
---|---|---|---|
0 | 名字 | 数学 | 语文 |
1 | Dkd | 25.1 | 98 |
2 | Hff | 26.0 | 90 |
3 | Zfs | 27.0 | 87 |
4 | Lghgd | 28.0 | 97 |
2、pandas:数据过滤获取
通过DataFrame的相关方式可以获取对应的列或者数据形成一个新的DataFrame, 方便后续进行统计计算。
# 数据过滤获取 columns=["age","name","历史","数学","语文"] dit={'name':['Dfg','Cfg','Cfg','Mel'], 'age':[12,13,14,15], '语文':[np.nan,99,97,90], '数学':[78,89,89,90], '历史':[90,98,97,96]} df2=pd.DataFrame(dit,index=['one','two','three','four']) df2
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | 12 | Dfg | 90 | 78 | NaN |
two | 13 | Cfg | 98 | 89 | 99.0 |
three | 14 | Cfg | 97 | 89 | 97.0 |
four | 15 | Mel | 96 | 90 | 90.0 |
df3=df2[columns[2:4]]df3
历史 | 数学 | |
---|---|---|
one | 90 | 78 |
two | 98 | 89 |
three | 97 | 89 |
four | 96 | 90 |
df3=df2.dropna()df3
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
two | 13 | Cfg | 98 | 89 | 99.0 |
three | 14 | Cfg | 97 | 89 | 97.0 |
four | 15 | Mel | 96 | 90 | 90.0 |
3、pandas:缺省值NaN处理方法
(1)dropna:根据标签的值中是否存在缺失数据对轴标签进行过滤(删除), 可以通过阈值的调节对缺失值的容忍度
(2)fillna:用指定值或者插值的方式填充缺失数据,比如: ffill或者bfill
(3)isnull:返回一个含有布尔值的对象,这些布尔值表示那些值是缺失值NA
(4)notnull:isnull的否定式
dit1={'name':['Dfg','Cfg','Zvb','Mel'], 'age':[12,np.nan,14,15], '语文':[np.nan,99,97,90], '数学':[78,89,np.nan,90], '历史':[90,98,97,np.nan]} df4=pd.DataFrame(dit1,index=['one','two','three','four']) df4
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | 12.0 | Dfg | 90.0 | 78.0 | NaN |
two | NaN | Cfg | 98.0 | 89.0 | 99.0 |
three | 14.0 | Zvb | 97.0 | NaN | 97.0 |
four | 15.0 | Mel | NaN | 90.0 | 90.0 |
# 为NaN的值设置为Truedf4.isnull()
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | False | False | False | False | True |
two | True | False | False | False | False |
three | False | False | False | True | False |
four | False | False | True | False | False |
# 为NaN的值设置为Faulsedf4.notnull()
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | True | True | True | True | False |
two | False | True | True | True | True |
three | True | True | True | False | True |
four | True | True | False | True | True |
# 默认删除包含缺失值的行df4.dropna()
# 默认删除全部为缺失值的行df4.dropna(how='all')
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | 12.0 | Dfg | 90.0 | 78.0 | NaN |
two | NaN | Cfg | 98.0 | 89.0 | 99.0 |
three | 14.0 | Zvb | 97.0 | NaN | 97.0 |
four | 15.0 | Mel | NaN | 90.0 | 90.0 |
# 默认删除缺失值的列df4.dropna(axis=1)
name | |
---|---|
one | Dfg |
two | Cfg |
three | Zvb |
four | Mel |
df4.dropna(axis=1,thresh=3)
age | name | 历史 | 数学 | 语文 | |
---|---|---|---|---|---|
one | 12.0 | Dfg | 90.0 | 78.0 | NaN |
two | NaN | Cfg | 98.0 | 89.0 | 99.0 |
three | 14.0 | Zvb | 97.0 | NaN | 97.0 |
four | 15.0 | Mel | NaN | 90.0 | 90.0 |
df5=pd.DataFrame(np.random.randn(7,3)) df5.ix[:4,1]=np.nan df5.ix[3:4,2]=np.nan df5.ix[[1,2],0]=np.nan df5
0 | 1 | 2 | |
---|---|---|---|
0 | 0.555112 | NaN | 0.043554 |
1 | 1.285995 | NaN | -0.907715 |
2 | -1.348955 | NaN | -1.285340 |
3 | 1.864293 | NaN | NaN |
4 | 0.931731 | NaN | NaN |
5 | -0.012471 | -1.053531 | 1.240825 |
6 | 0.806216 | -1.960456 | 0.905550 |
df5.fillna(0)
0 | 1 | 2 | |
---|---|---|---|
0 | 0.555112 | 0.000000 | 0.043554 |
1 | 1.285995 | 0.000000 | -0.907715 |
2 | -1.348955 | 0.000000 | -1.285340 |
3 | 1.864293 | 0.000000 | 0.000000 |
4 | 0.931731 | 0.000000 | 0.000000 |
5 | -0.012471 | -1.053531 | 1.240825 |
6 | 0.806216 | -1.960456 | 0.905550 |
df5.fillna({1:0.5,2:-1,0:1})
0 | 1 | 2 | |
---|---|---|---|
0 | 0.555112 | 0.500000 | 0.043554 |
1 | 1.285995 | 0.500000 | -0.907715 |
2 | -1.348955 | 0.500000 | -1.285340 |
3 | 1.864293 | 0.500000 | -1.000000 |
4 | 0.931731 | 0.500000 | -1.000000 |
5 | -0.012471 | -1.053531 | 1.240825 |
6 | 0.806216 | -1.960456 | 0.905550 |
4、常用的数学统计方法
count:计算非NaN值的数量
describe:针对series和dataframe的各列计算总统计值
min/max:计算最大值和最小值
argmin/argmax:计算能够获取到最大值、最小值的索引值(整数)
quantile:计算样本的分位数0-1
sum:值得和
mean:值得平均值
median:值中位数
mad:根据平均值计算平均绝对距离差
var:样本数值的方差
std:样本数值的标准差
cumsum:样本值的累积和
cummin/summax:样本的累积最大值、最小值
cumprod:样本值的累计积
pct_change:计算百分数的变化
df3=df2.dropna() print("========================================") print(df3) print("========================================") print(df3.describe()) print("========================================") print(df3.var()) print("========================================") print(df3.sum()) print("========================================") print(df3.cumsum()) print("========================================") # print(df3.cumprod())
========================================age name 历史 数学 语文 two 13 Cfg 98 89 99.0 three 14 Cfg 97 89 97.0 four 15 Mel 96 90 90.0 ========================================age 历史 数学 语文 count 3.0 3.0 3.000000 3.000000 mean 14.0 97.0 89.333333 95.333333 std 1.0 1.0 0.577350 4.725816 min 13.0 96.0 89.000000 90.000000 25% 13.5 96.5 89.000000 93.500000 50% 14.0 97.0 89.000000 97.000000 75% 14.5 97.5 89.500000 98.000000 max 15.0 98.0 90.000000 99.000000 ======================================== age 1.000000 历史 1.000000 数学 0.333333 语文 22.333333 dtype: float64 ======================================== age 42 name CfgCfgMel 历史 291 数学 268 语文 286 dtype: object ========================================age name 历史 数学 语文 two 13 Cfg 98 89 99 three 27 CfgCfg 195 178 196 four 42 CfgCfgMel 291 268 286 ========================================
5、pandas:相关系数与协方差
dit={'age':[12,13,14,15], '语文':[np.nan,99,97,90],'数学':[78,89,89,90], '历史':[90,98,97,96]} df7=pd.DataFrame(dit,index=['one','two','three','four']) df7
age | 历史 | 数学 | 语文 | |
---|---|---|---|---|
one | 12 | 90 | 78 | NaN |
two | 13 | 98 | 89 | 99.0 |
three | 14 | 97 | 89 | 97.0 |
four | 15 | 96 | 90 | 90.0 |
# 相关系数df7.corr()
age | 历史 | 数学 | 语文 | |
---|---|---|---|---|
age | 1.000000 | 0.610658 | 0.817338 | -0.952217 |
历史 | 0.610658 | 1.000000 | 0.954188 | 0.952217 |
数学 | 0.817338 | 0.954188 | 1.000000 | -0.977356 |
语文 | -0.952217 | 0.952217 | -0.977356 | 1.000000 |
# 协方差df7.cov()
age | 历史 | 数学 | 语文 | |
---|---|---|---|---|
age | 1.666667 | 2.833333 | 6.000000 | -4.500000 |
历史 | 2.833333 | 12.916667 | 19.500000 | 4.500000 |
数学 | 6.000000 | 19.500000 | 32.333333 | -2.666667 |
语文 | -4.500000 | 4.500000 | -2.666667 | 22.333333 |
6、pandas:唯一值、值计数以及成员资格
(1)unique方法用于获取Series中的唯一值数组(去重数据后的数组)
(2)value_counts方法用于计算一个Series中各值的出现频率
(3)isin方法用于判断矢量化集合的成员资格,可用于选取Series中或者DataFrame中列中数据的子集
# df7.unique()错误使用方法,对于dataframe必须要指定是哪一列,对于series可以直接使用unique df7["数学"].unique() array([78, 89, 90], dtype=int64)
# df7.value_counts()错误使用方法,对于dataframe必须要指定是哪一列,对于series可以直接使用value_counts # df7.value_counts() df7["数学"].value_counts()
89 2 78 1 90 1 Name: 数学, dtype: int64
mask=[89,90] print(df7.isin(mask)) print("========================================") print(df7[df7.isin(mask)])
age 历史 数学 语文 one False True False False two False False True False three False False True False four False False True True ========================================age 历史 数学 语文 one NaN 90.0 NaN NaN two NaN NaN 89.0 NaN three NaN NaN 89.0 NaN four NaN NaN 90.0 90.0
7、pandas:层次索引
(1)在某一个方向拥有多个(两个及两个以上)索引级别
(2)通过层次化索引,pandas能够以较低维度形式处理高纬度的数据
(3)通过层次化索引,可以按照层次统计数据
(4)层次索引包括Series层次索引和DataFrame层次索引
# series的层次索引 data=pd.Series([989.44,987,934,9245,7824], index=[['2001','2001','2001','2002','2002'], ["苹果","香蕉","西瓜","苹果","西瓜"]]) data
2001 苹果 989.44香蕉 987.00西瓜 934.00 2002 苹果 9245.00西瓜 7824.00 dtype: float64
# 第一层索引 data['2001']
苹果 989.44 香蕉 987.00 西瓜 934.00 dtype: float64
# 第二层索引 # 通过data['2001']获取的数据还是series类型,所以可以使用索引或者下标的方式获取响应的值 data['2001']['苹果':'香蕉'] # data['2001'][0:1]
苹果 989.44 香蕉 987.00 dtype: float64
data['2001':'2002']
2001 苹果 989.44香蕉 987.00西瓜 934.00 2002 苹果 9245.00西瓜 7824.00 dtype: float64
# dataframe的层次索引 dic={"year":[2001,2001,2002,2002,2003],"fruit":['apple','banana','apple','banana','apple'], "prodution":[123,144,5556,768,7977], "profite":[567,876,978,243,123]} dfa=pd.DataFrame(dic) dfa
fruit | prodution | profite | year | |
---|---|---|---|---|
0 | apple | 123 | 567 | 2001 |
1 | banana | 144 | 876 | 2001 |
2 | apple | 5556 | 978 | 2002 |
3 | banana | 768 | 243 | 2002 |
4 | apple | 7977 | 123 | 2003 |
# 将year作为一级索引,将fruit作为二级索引 dfa.set_index=["year","fruit"]dfa
prodution | profite | ||
---|---|---|---|
year | fruit | ||
2001 | apple | 123 | 567 |
banana | 144 | 876 | |
2002 | apple | 5556 | 978 |
banana | 768 | 243 | |
2003 | apple | 7977 | 123 |
# 获取一列dfa['prodution']
year fruit 2001 apple 123banana 144 2002 apple 5556banana 768 2003 apple 7977 Name: prodution, dtype: int64
dfa.ix[2001]
prodution | profite | |
---|---|---|
fruit | ||
apple | 123 | 567 |
banana | 144 | 876 |
dfa.ix[2001,'apple']
prodution 123 profite 567 Name: (2001, apple), dtype: int64
dfa.ix[2001:2002]
prodution | profite | ||
---|---|---|---|
year | fruit | ||
2001 | apple | 123 | 567 |
banana | 144 | 876 | |
2002 | apple | 5556 | 978 |
banana | 768 | 243 |
dfa.ix[2001:2002]["prodution"]
year fruit 2001 apple 123banana 144 2002 apple 5556banana 768 Name: prodution, dtype: int64
# 按照层次索引进行统计数据 # dfa.sum(level='year')dfa.sum(level='fruit')
prodution | profite | |
---|---|---|
fruit | ||
apple | 13656 | 1668 |
banana | 912 | 1119 |
dfa.min(level=['year','fruit'])
prodution | profite | ||
---|---|---|---|
year | fruit | ||
2001 | apple | 123 | 567 |
banana | 144 | 876 | |
2002 | apple | 5556 | 978 |
banana | 768 | 243 | |
2003 | apple | 7977 | 123 |
pandas基本功能相关推荐
- pandas教程:pandas主要功能详解
pandas基本功能 将文件数据导入Pandas 通过pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv,主要可以读取文 ...
- 绝了!Pandas绘图功能
柱状图箱线图密度图条形图散点图折线图保存绘图总结 可视化是用来探索性数据分析最强大的工具之一.Pandas库包含基本的绘图功能,可以让你创建各种绘图.Pandas中的绘图是在matplotlib之上构 ...
- numpy与pandas各种功能及其对比(超全)
在做数据处理的时候经常会用到numpy和pandas,有时候容易搞混,这篇文章就从功能方面总结对比一下二者的区别. 一.简介 numpy:numpy是以矩阵为基础的数学计算模块,提供高性能的矩阵运算, ...
- python pandas 讲解ppt_Python数据分析之pandas基本功能讲解
pandas的基本功能 重新索引 不存在的索引都用同一个值填充: obj.reindex(['a','b','c','d','e'],fill_value=0) out: a -5.3 b 7.2 C ...
- python进阶--pandas基本功能
pandas官方用户手册网站 一.调用pandas import pandas:导入pandas包,后续代码就可以使用pandas包里定义好的功能了. import pandas as pd: 相当于 ...
- Python Pandas常用功能速查
0.下载和导入 (1)下载 在terminal中,openpyxl不装容易报错 pip install pandas pip install openpyxl (2)导入 在python中 impor ...
- pandas常用功能整理
1.读写 读指定格式txt: train = pd.read_table('/home/hadoop/jzzz/train/subsidy_train.txt',sep=',',header=-1) ...
- 那些功能逆天,却鲜为人知的pandas骚操作
文章来源:Python数据科学 作者:东哥 pandas有些功能很逆天,但却鲜为人知,本篇给大家盘点一下. 一.ACCESSOR pandas有一种功能非常强大的方法,它就是accessor,可以将它 ...
- 一行代码将Pandas加速4倍
作者:George Seif 编译:ronghuaiyang 导读 虽然Pandas的功能非常强大,但是对于大数据集来说,确实是很慢的. 虽然 panda 是 Python 中用于数据处理的库,但它并 ...
最新文章
- unity导入素材时材质丢失素材变成粉红色的解决方法
- 这就是数据分析之数据变换
- r720支持多少频率的内存吗_DDR4 2400到DDR4 3200,最大内存频率买多少?为什么买了高频 速度却上不去...
- ## CSP 201609-2 火车购票购买,C语言版(90分版)
- oracle dba 两日速成课程.pdf,oracle_dba_两日速成课程.pdf
- html 抽签分小组代码,JavaScript实现班级抽签小程序
- python 反传播_反向传播算法详解和Python代码实现
- RestTemplate使用实战-exchange方法讲解
- BinaryOperator示例
- js 校验手机号码格式
- Java面向对象期末备考
- QQ邮箱模拟登陆(2022.9.12)
- 国产芯片、数字人体……今年的服贸会正上演一场“科技大秀”
- 家教信息服务平台的开发
- 电脑桌面图标变成蓝色的怎么办
- Mysql事务-MVCC
- 微分中值定理习题技巧收集与整理
- mysql abb复制_abb变频器怎样复制数据
- 计算机考研科目887,2017年华中科技大学887数据结构与算法分析考研试题
- 机器人工程专业的教育与考核