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基本功能相关推荐

  1. pandas教程:pandas主要功能详解

    pandas基本功能 将文件数据导入Pandas 通过pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv,主要可以读取文 ...

  2. 绝了!Pandas绘图功能

    柱状图箱线图密度图条形图散点图折线图保存绘图总结 可视化是用来探索性数据分析最强大的工具之一.Pandas库包含基本的绘图功能,可以让你创建各种绘图.Pandas中的绘图是在matplotlib之上构 ...

  3. numpy与pandas各种功能及其对比(超全)

    在做数据处理的时候经常会用到numpy和pandas,有时候容易搞混,这篇文章就从功能方面总结对比一下二者的区别. 一.简介 numpy:numpy是以矩阵为基础的数学计算模块,提供高性能的矩阵运算, ...

  4. python pandas 讲解ppt_Python数据分析之pandas基本功能讲解

    pandas的基本功能 重新索引 不存在的索引都用同一个值填充: obj.reindex(['a','b','c','d','e'],fill_value=0) out: a -5.3 b 7.2 C ...

  5. python进阶--pandas基本功能

    pandas官方用户手册网站 一.调用pandas import pandas:导入pandas包,后续代码就可以使用pandas包里定义好的功能了. import pandas as pd: 相当于 ...

  6. Python Pandas常用功能速查

    0.下载和导入 (1)下载 在terminal中,openpyxl不装容易报错 pip install pandas pip install openpyxl (2)导入 在python中 impor ...

  7. pandas常用功能整理

    1.读写 读指定格式txt: train = pd.read_table('/home/hadoop/jzzz/train/subsidy_train.txt',sep=',',header=-1) ...

  8. 那些功能逆天,却鲜为人知的pandas骚操作

    文章来源:Python数据科学 作者:东哥 pandas有些功能很逆天,但却鲜为人知,本篇给大家盘点一下. 一.ACCESSOR pandas有一种功能非常强大的方法,它就是accessor,可以将它 ...

  9. 一行代码将Pandas加速4倍

    作者:George Seif 编译:ronghuaiyang 导读 虽然Pandas的功能非常强大,但是对于大数据集来说,确实是很慢的. 虽然 panda 是 Python 中用于数据处理的库,但它并 ...

最新文章

  1. unity导入素材时材质丢失素材变成粉红色的解决方法
  2. 这就是数据分析之数据变换
  3. r720支持多少频率的内存吗_DDR4 2400到DDR4 3200,最大内存频率买多少?为什么买了高频 速度却上不去...
  4. ## CSP 201609-2 火车购票购买,C语言版(90分版)
  5. oracle dba 两日速成课程.pdf,oracle_dba_两日速成课程.pdf
  6. html 抽签分小组代码,JavaScript实现班级抽签小程序
  7. python 反传播_反向传播算法详解和Python代码实现
  8. RestTemplate使用实战-exchange方法讲解
  9. BinaryOperator示例
  10. js 校验手机号码格式
  11. Java面向对象期末备考
  12. QQ邮箱模拟登陆(2022.9.12)
  13. 国产芯片、数字人体……今年的服贸会正上演一场“科技大秀”
  14. 家教信息服务平台的开发
  15. 电脑桌面图标变成蓝色的怎么办
  16. Mysql事务-MVCC
  17. 微分中值定理习题技巧收集与整理
  18. mysql abb复制_abb变频器怎样复制数据
  19. 计算机考研科目887,2017年华中科技大学887数据结构与算法分析考研试题
  20. 机器人工程专业的教育与考核

热门文章

  1. Ubuntu系统安装Docker
  2. 万用表排查焊接线路(小白)
  3. 关闭当前(Active)视图和关闭所有视图
  4. iOS里很简单的推送,移动端。
  5. js 复制文本框内容
  6. 摩托罗拉何以靠Android重生
  7. 怀旧服最新服务器开放计划,《魔兽世界》经典怀旧服 扩容与新增服务器计划公告...
  8. 2 Arduino基本数字输出功能LED灯
  9. 初始HTML,新闻案例
  10. Linux各类常用操作