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
 名字数学语文
0Dkd25.198
1Hff26.090
2Zfs27.087
3Lghgd \t28.097
#读取text文件,sep指定分隔符,不读取头部数据 。默认使用逗号的形式分割
df1=pd.read_csv("text1.txt",encoding='gbk',sep=' ',header=None)

df1
 012
0名字数学语文
1Dkd25.198
2Hff26.090
3Zfs27.087
4Lghgd28.097
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
 agename历史数学语文
one12Dfg9078NaN
two13Cfg988999.0
three14Cfg978997.0
four15Mel969090.0
df3=df2[columns[2:4]]

df3
 历史数学
one9078
two9889
three9789
four9690
df3=df2.dropna()

df3
 agename历史数学语文
two13Cfg988999.0
three14Cfg978997.0
four15Mel969090.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
 agename历史数学语文
one12.0Dfg90.078.0NaN
twoNaNCfg98.089.099.0
three14.0Zvb97.0NaN97.0
four15.0MelNaN90.090.0
# 为NaN的值设置为True

df4.isnull()
 agename历史数学语文
oneFalseFalseFalseFalseTrue
twoTrueFalseFalseFalseFalse
threeFalseFalseFalseTrueFalse
fourFalseFalseTrueFalseFalse
# 为NaN的值设置为Faulse

df4.notnull()
 agename历史数学语文
oneTrueTrueTrueTrueFalse
twoFalseTrueTrueTrueTrue
threeTrueTrueTrueFalseTrue
fourTrueTrueFalseTrueTrue
# 默认删除包含缺失值的行

df4.dropna()
# 默认删除全部为缺失值的行

df4.dropna(how='all')
 agename历史数学语文
one12.0Dfg90.078.0NaN
twoNaNCfg98.089.099.0
three14.0Zvb97.0NaN97.0
four15.0MelNaN90.090.0
# 默认删除缺失值的列

df4.dropna(axis=1)
 name
oneDfg
twoCfg
threeZvb
fourMel
df4.dropna(axis=1,thresh=3)

 agename历史数学语文
one12.0Dfg90.078.0NaN
twoNaNCfg98.089.099.0
three14.0Zvb97.0NaN97.0
four15.0MelNaN90.090.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 
 012
00.555112NaN0.043554
11.285995NaN-0.907715
2-1.348955NaN-1.285340
31.864293NaNNaN
40.931731NaNNaN
5-0.012471-1.0535311.240825
60.806216-1.9604560.905550
df5.fillna(0)

 012
00.5551120.0000000.043554
11.2859950.000000-0.907715
2-1.3489550.000000-1.285340
31.8642930.0000000.000000
40.9317310.0000000.000000
5-0.012471-1.0535311.240825
60.806216-1.9604560.905550
df5.fillna({1:0.5,2:-1,0:1})

 012
00.5551120.5000000.043554
11.2859950.500000-0.907715
2-1.3489550.500000-1.285340
31.8642930.500000-1.000000
40.9317310.500000-1.000000
5-0.012471-1.0535311.240825
60.806216-1.9604560.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历史数学语文
one129078NaN
two13988999.0
three14978997.0
four15969090.0
# 相关系数

df7.corr()
 age历史数学语文
age1.0000000.6106580.817338-0.952217
历史0.6106581.0000000.9541880.952217
数学0.8173380.9541881.000000-0.977356
语文-0.9522170.952217-0.9773561.000000
# 协方差

df7.cov()
 age历史数学语文
age1.6666672.8333336.000000-4.500000
历史2.83333312.91666719.5000004.500000
数学6.00000019.50000032.333333-2.666667
语文-4.5000004.500000-2.66666722.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
 fruitprodutionprofiteyear
0apple1235672001
1banana1448762001
2apple55569782002
3banana7682432002
4apple79771232003
# 将year作为一级索引,将fruit作为二级索引
dfa.set_index=["year","fruit"]

dfa
  produtionprofite
yearfruit  
2001apple123567
banana144876
2002apple5556978
banana768243
2003apple7977123
# 获取一列

dfa['prodution']
year  fruit 
2001  apple      123
      banana     144
2002  apple     5556
      banana     768
2003  apple     7977
Name: prodution, dtype: int64
dfa.ix[2001]
 produtionprofite
fruit  
apple123567
banana144876
dfa.ix[2001,'apple']

prodution    123
profite      567
Name: (2001, apple), dtype: int64
dfa.ix[2001:2002]
  produtionprofite
yearfruit  
2001apple123567
banana144876
2002apple5556978
banana768243
dfa.ix[2001:2002]["prodution"]

year  fruit 
2001  apple      123
      banana     144
2002  apple     5556
      banana     768
Name: prodution, dtype: int64
# 按照层次索引进行统计数据
# dfa.sum(level='year')

dfa.sum(level='fruit')
 produtionprofite
fruit  
apple136561668
banana9121119
dfa.min(level=['year','fruit'])

  produtionprofite
yearfruit  
2001apple123567
banana144876
2002apple5556978
banana768243
2003apple7977123
  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas是一个强大的数据处理和分析工具,它提供了丰富的功能和方法来处理和操作数据。以下是一些Pandas的基本方法: 1. 创建DataFrame:可以使用Pandas的DataFrame对象来创建和操作数据表。可以通过传入字典、列表、数组等不同的数据结构来创建DataFrame。 2. 读取和写入数据:Pandas可以读取和写入各种格式的数据,如CSV、Excel、SQL数据库等。可以使用`read_csv()`、`read_excel()`等方法读取数据,使用`to_csv()`、`to_excel()`等方法写入数据。 3. 数据查看和统计:可以使用`head()`方法查看DataFrame的前几行数据,默认为前5行;使用`tail()`方法查看DataFrame的后几行数据,默认为后5行。还可以使用`describe()`方法获取DataFrame的统计信息,如均值、标准差、最小值、最大值等。 4. 数据选择和过滤:可以使用`loc[]`和`iloc[]`方法进行数据的选择和过滤。`loc[]`用于基于标签进行选择,`iloc[]`用于基于位置进行选择。可以通过传入行索引和列索引来选择特定的数据。 5. 数据排序:可以使用`sort_values()`方法对DataFrame进行排序。可以指定要排序的列名以及升序或降序排列。 6. 数据聚合和分组:可以使用`groupby()`方法对数据进行分组和聚合操作。可以根据某一列或多列进行分组,并应用聚合函数(如求和、平均值、计数等)。 7. 缺失值处理:可以使用`isnull()`和`fillna()`方法来处理缺失值。`isnull()`方法用于检测缺失值,`fillna()`方法用于填充缺失值。 8. 数据合并和连接:可以使用`merge()`和`concat()`方法将多个DataFrame进行合并和连接。`merge()`方法可以根据指定的列将两个DataFrame进行合并,`concat()`方法可以将多个DataFrame按行或列进行连接。 9. 数据可视化:Pandas提供了简单易用的数据可视化功能,可以使用`plot()`方法绘制各种类型的图表,如折线图、柱状图、散点图等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值