pandas的个人笔记输入

Pandas 数据结构

pandas.Series()(一维结构)

  • 作用:Series 类似表格中的一个(column),类似于一维数组,可以保存任何数据类型。

    Series 由索引(index)和组成

  • 格式:pd.Series( data, index, dtype, name, copy)

  • 参数:

    • data:一组数据(ndarray 类型)。

    • index:数据索引标签,如果不指定,默认从 0 开始

    • dtype:数据类型,默认会自己判断

    • name:设置名称。

    • copy:拷贝数据,默认为 False。

数组创建(任何类型的都可以)

 import pandas as pd
 pd = pd.Series([1,3,5,"nihao",6,8])
 print(pd)

输出结果:

 0        1
 1        3
 2        5
 3    nihao
 4        6
 5        8
 dtype: object

字典创建

  • 格式:pd.Series(字典名,index=[值])

 import pandas as pd
 sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
 myvar = pd.Series(sites)
 print(myvar)
 print()
 a = pd.Series(sites, index=[1,2])    #用key来查看数据
 print(a)

输出的结果:

 1    Google
 2    Runoob
 3      Wiki
 dtype: object
 ​
 1    Google
 2    Runoob
 dtype: object

通过索引修改标签

 import pandas as pd
 pd = pd.Series([1,3,5,"nihao",6,8], index=["a","b","c","d","e","f"])
 print(pd)

输出结果:

 a        1
 b        3
 c        5
 d    nihao
 e        6
 f        8
 dtype: object

查看series中的 元素值

  • 格式:series变量名.values # 返回一个装有元素的列表

 import pandas as pd
 import numpy as np
 a = pd.Series([1,3,5,np.nan,6, 8])
 b = a.values
 print(b)

输出结果:

 [ 1.  3.  5. nan  6.  8.]

查看series中的 索引值

  • 格式:series变量名.index # 返回一个装有索引值的列表

 import pandas as pd
 import numpy as np
 a = pd.Series([1,3,5,np.nan,6, 8])
 b = a.index
 print(b)

输出结果:

 RangeIndex(start=0, stop=6, step=1)

series中的 切片操作

  • 格式:变量名[n: m: 步长] #和列表的切片一样的操作,返回一个seies类型

 import pandas as pd
 import numpy as np
 a = pd.Series([1,3,5,np.nan,6, 8])
 print(a[::2])

series中的 索引赋值

  • 格式:变量名.index.name = sth

  • 参数:sth:填入索引的名字

 import pandas as pd
 import numpy as np
 a = pd.Series([1,3,5,np.nan,6, 8])
 a.index.name="索引"
 print(a)
 索引
 0    1.0
 1    3.0
 2    5.0
 3    NaN
 4    6.0
 5    8.0
 dtype: float64

根据 索引值 读取数据

  • 格式:变量名[索引] #返回索引对应的元素

 import pandas as pd
 pd = pd.Series([1,3,5,"nihao",6,8], index=["a","b","c","d","e","f"])
 print(pd["b"])
 3

创建一段时间序列Series

  • 格式:pd.date_range('time',periods=num)

  • 参数:time:填写时间数字

num:该Series的长度

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 print(date)

输出结果:

 DatetimeIndex(['2018-10-10', '2018-10-11', '2018-10-12', '2018-10-13',
                '2018-10-14', '2018-10-15'],
               dtype='datetime64[ns]', freq='D')

pandas.DataFrame()(二维结构)

  • 格式:pandas.DataFrame( data, index, columns, dtype, copy)

  • 参数说明:

    • data:一组数据(ndarray、series, map, lists, dict 等类型)。

    • index:索引值,或者可以称为行标签。

    • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

    • dtype:数据类型。

    • copy:拷贝数据,默认为 False。

创建DataFrame

1、字典创建

  • 规则:每一个key都相当一列数据

 import pandas as pd
 ​
 data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
 ​
 df = pd.DataFrame(data)
 ​
 print (df)

输出结果:

      Site  Age
 0  Google   10
 1  Runoob   12
 2    Wiki   13

2、数组创建

 import pandas as pd
 ​
 data = [['Google',10],['Runoob',12],['Wiki',13]]
 ​
 df = pd.DataFrame(data,columns=['Site','Age'],dtype=float)
 ​
 print(df)

输出结果:

      Site   Age
 0  Google  10.0
 1  Runoob  12.0
 2    Wiki  13.0

DateFrame修改行标签列标签

  • 格式:pd.DataFrame(date, index=name1, columns=name2)

  • 参数:

    • date:数组或字典

    • name1:一个一维结构

    • name2:一个一维结构

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 df = pd.DataFrame(np.random.randn(6, 4),index=date,columns=list("abcd"))
 print(df)

输出结果:

                    a         b         c         d
 2018-10-10  0.250326 -0.960180  0.878228 -0.303692
 2018-10-11  1.158560 -2.243116  0.728646  0.182529
 2018-10-12 -1.302296 -0.379934 -0.707340 -0.085085
 2018-10-13  0.699283  0.727865 -1.912914 -1.615879
 2018-10-14  0.036541  0.820634 -0.369240 -0.678624
 2018-10-15 -0.004778  1.088514  0.434265 -2.795287

DataFrame的数据查看

1、查看头尾数据

  • 格式:df.head(num) #查看开头的数据

df.tail(num) #查看结尾的数据

  • 参数:df:DataFrame类型的变量名

num:表示要查看的行数,默认为5

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 df = pd.DataFrame(np.random.randn(6, 4),index=date,columns=list("abcd"))
 a = df.head()
 b = df.tail(3)
 print(a)
 print()
 print(b)

输出结果:

                    a         b         c         d
 2018-10-10  0.884416 -0.596544  0.291676 -1.665636
 2018-10-11 -0.549690 -0.764856 -0.759004 -1.279359
 2018-10-12 -0.402498 -0.346603 -1.304580  1.402060
 2018-10-13  0.899449  0.850684 -1.381475  0.591909
 2018-10-14  1.124828  0.075241 -1.488315  1.742104
 ​
                    a         b         c         d
 2018-10-13  0.899449  0.850684 -1.381475  0.591909
 2018-10-14  1.124828  0.075241 -1.488315  1.742104
 2018-10-15  1.460785  0.162398  0.058642  0.982680

2、查看 行标签

  • 格式:df.index (返回一个含有行标签的一维结构)

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 df = pd.DataFrame(np.random.randn(6, 4),index=date,columns=list("abcd"))
 print(df.index)

输出结果:

 DatetimeIndex(['2018-10-10', '2018-10-11', '2018-10-12', '2018-10-13',
                '2018-10-14', '2018-10-15'],
               dtype='datetime64[ns]', freq='D')

3、查看 列标签

  • 格式:df.columns

  • 参数:df:DataFrame类型的变量名

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 df = pd.DataFrame(np.random.randn(6, 4),index=date,columns=list("abcd"))
 print(df.columns)

输出结果:

 Index(['a', 'b', 'c', 'd'], dtype='object')

4、查看 具体数据值

  • 格式:df.values

  • 参数:df:DataFrame类型的变量名

 import pandas as pd
 date = pd.date_range('20181010', periods=6)
 df = pd.DataFrame(np.random.randn(6, 4),index=date,columns=list("abcd"))
 print(df.values)

输出结果:

 [[ 1.41232814  1.06276238  1.17474692  0.89057379]
  [ 0.08332357 -0.03581437 -1.18219557 -0.27808901]
  [-0.82514546  0.67888286 -0.90839732  0.62961124]
  [ 0.20796877 -1.07239015  1.03328507  1.2404484 ]
  [ 0.50036167 -1.445475    1.38172177  0.42885936]
  [-0.98025886 -0.42023525 -1.00091037 -0.36920668]]

DataFrame的数据操作

1、行操作

查看数据(.iloc()函数)

  • 格式:df.iloc[index]

df.loc[index1:index2] #从index1到index2的所有数据,包括index2

  • 参数:index:行的下标

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df.iloc[1])
 print(df.loc[1:3])

输出结果:

        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 ​
 名称      控方证人
 评分       9.5
 产地        美国
 上映时间    1957
 时长       116
 首映地点      美国
 Name: 1, dtype: object
      名称   评分   产地  上映时间   时长   首映地点
 1  控方证人  9.5   美国  1957  116     美国
 2  美丽人生  9.5  意大利  1997  116    意大利
 3  阿甘正传  9.4   美国  1994  142  洛杉矶首映

添加数据(.append()函数)

  • 格式:df = df.append(sr)

  • 参数:sr:指一个series数据

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 dit = {"名称":'复仇者联盟3', '评分':8.4, '产地':'美国', '上映时间':2018, '时长':200, '首映地点':'美国'}
 s = pd.Series(dit)
 s.name=6
 df = df.append(s)
 print(df)

输出结果:

        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  复仇者联盟3  8.4    美国  2018  200      美国

删除行数据(.drop()函数)

  • 格式:df = df.drop([index],axis) #删除索引对应的行,要进行赋值

df.drop([index],inplace=True) #直接删除 df 中的对应行,直接返回DataFrame类型

  • 参数:index:行标签

axis:默认为0

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 df = df.drop([5])
 print(df)

输出结果:

 名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 ​
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港

2、列操作

查看数据 (索引)

  • 格式:df.columns #返回一个含有所有的列标签的数组

df[name]【n : m:num] #返回name列下n到m的步长为num的数据

df[[name1,name2,name3...]] #返回多列的数据

  • 参数:index:行标签

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df.columns)
 print()
 print(df['产地'][1:3])
 print()
 print(df[['产地','上映时间','名称']])

输出结果:

 Index(['名称', '评分', '产地', '上映时间', '时长', '首映地点'], dtype='object')
 ​
 1     美国
 2    意大利
 Name: 产地, dtype: object
 ​
      产地  上映时间      名称
 0    美国  1994  肖生克的救赎
 1    美国  1957    控方证人
 2   意大利  1997    美丽人生
 3    美国  1994    阿甘正传
 4  中国大陆  1993    霸王别姬
 5    美国  2012   泰坦尼克号

添加列数据

  • 格式:df[name]=list

  • 参数:name:要添加的列的名字

list:要添加元素所构成的列表

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df['序号']=list('abcdef')
 print(df)

输出结果:

 ​
      名称 评分  产地  上映时间    时长  首映地点    序号
 0   肖生克的救赎  9.8 美国  1994    142 多伦多电影节  a
 1   控方证人    9.5 美国  1957    116 美国  b
 2   美丽人生    9.5 意大利 1997    116 意大利 c
 3   阿甘正传    9.4 美国  1994    142 洛杉矶首映   d
 4   霸王别姬    9.4 中国大陆    1993    171 香港  e
 5   泰坦尼克号   9.4 美国  2012    194 中国大陆    f

删除列数据(.drop()函数)

  • 格式:df=df.drop(name,axis=1)

  • 参数:name:列的名称

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 df=df.drop('上映时间',axis=1)
 print()
 print(df)

输出结果:

        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 ​
        名称   评分    产地   时长    首映地点
 0  肖生克的救赎  9.8    美国  142  多伦多电影节
 1    控方证人  9.5    美国  116      美国
 2    美丽人生  9.5   意大利  116     意大利
 3    阿甘正传  9.4    美国  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  171      香港
 5   泰坦尼克号  9.4    美国  194    中国大陆

3、通过标签选择数据

  • 格式:df.loc[[index],[columns]]

  • 参数:index:行标签

    columns:列标签

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 a = df.loc[3,'名称']
 print(a)
 print(df.loc[[1,2,3],['名称','上映时间']])

输出结果:

 名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 ​
 阿甘正传
      名称  上映时间
 1  控方证人  1957
 2  美丽人生  1997
 3  阿甘正传  1994

4、条件选择

运用"=="选择数据

  • 格式:df['columns']=='name' #返回一个Ture和FALSE的Series

df.columns=='name'

  • 参数:columns:表示列标签

name:列标签中的某个元素

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df['产地']=='意大利')
 print()
 print(df[df['产地']=='意大利'])

输出结果:

 0    False
 1    False
 2     True
 3    False
 4    False
 5    False
 6    False
 7    False
 8    False
 Name: 产地, dtype: bool
      名称   评分   产地  上映时间   时长 首映地点
 2  美丽人生  9.5  意大利  1997  116  意大利

运用"()&()"选择数据(and条件)

  • 格式:df[(条件1)&(条件2)] #返回一个同时满足所有条件的数据DataFrame

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df=df[(df.产地=='美国')&(df.评分<9.4)]
 print(df)

输出结果:

        名称   评分  产地  上映时间   时长 首映地点
 6  机器人总动员  9.3  美国  2008   98   美国
 7   疯狂动物城  9.3  美国  2016  109   美国
 8    城市之光  9.2  美国  1931   87   美国

运用"()|()"选择数据(or条件)

  • 格式:df[(条件1)|(条件2)] #返回一个只要满足任一条件的数据DataFrame

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df=df[((df.产地=='美国')|(df.产地=='意大利'))&(df.评分<9.6)]
 print(df)

输出结果:

        名称   评分   产地  上映时间   时长   首映地点
 1    控方证人  9.5   美国  1957  116     美国
 2    美丽人生  9.5  意大利  1997  116    意大利
 3    阿甘正传  9.4   美国  1994  142  洛杉矶首映
 5   泰坦尼克号  9.4   美国  2012  194   中国大陆
 6  机器人总动员  9.3   美国  2008   98     美国
 7   疯狂动物城  9.3   美国  2016  109     美国
 8    城市之光  9.2   美国  1931   87     美国

5、修改某一元素(对单个数据修改)

  • 格式:df.loc[index, columns]=sth

  • 参数:index:要修改元素的行标签

columns:要修改元素的列标签

sth:要修改成的值

df:DataFrame的名称

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 df.loc[5,"名称"]="海宝来了"
 print(df)
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5    海宝来了  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国

6、替换某一元素(可对多个数据操作)

  • 格式:df[columns_name].replace(former, later, inplace) (替换一对值)

df[columns_name].replace([former1, later1], [former2, later2] , inplace) (替换多对值)

  • 参数:columns_name:列的名称

    former:要替换的元素

    later:要提换成的内容

inplace:默认为False,返回替换后的列的Series;等于True时,将替换的列覆盖到原数据,该表达式返回none

  • 作用:将对应列的所有former替换为later

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df["产地"].replace('美国', '中国'))
 print()
 print(df["产地"].replace('美国', '中国', inplace=True))
 df['产地'].replace('美国','中国',inplace=True)
 print(df)
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
 0      中国
 1      中国
 2     意大利
 3      中国
 4    中国大陆
 5      中国
 6      中国
 7      中国
 8      中国
 Name: 产地, dtype: object
 ​
 None
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    中国  1994  142  多伦多电影节
 1    控方证人  9.5    中国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    中国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    中国  2012  194    中国大陆
 6  机器人总动员  9.3    中国  2008   98      美国
 7   疯狂动物城  9.3    中国  2016  109      美国
 8    城市之光  9.2    中国  1931   87      美国

pandas 数据处理

缺失值处理(对空白内容做处理)

方法说明
dropna根据标签中的缺失值进行过滤,删除缺失值
fillna对缺失值进行填充
isnull返回一个布尔值对象,判断哪些值是缺失值
notnullisnull的否定式

1、判断缺失值

  • 格式:df.isnull() #对所有的数据进行判断是否为缺失值,返回False和True的DataFrame

df[columns].isnull() #对columns列的数据进行判断,并返回DataFrame

  • 参数:columns:列的名称

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df["序号"]=['a','b',np.nan,'d',np.nan,'f','g',np.nan,'h']
 print(df)
 print()
 a=df['序号'].isnull()
 print(a)
 print()
 print(df[a])

输出结果:

 名称   评分    产地  上映时间   时长    首映地点   序号
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节    a
 1    控方证人  9.5    美国  1957  116      美国    b
 2    美丽人生  9.5   意大利  1997  116     意大利  NaN
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d
 4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f
 6  机器人总动员  9.3    美国  2008   98      美国    g
 7   疯狂动物城  9.3    美国  2016  109      美国  NaN
 8    城市之光  9.2    美国  1931   87      美国    h
 ​
 0    False
 1    False
 2     True
 3    False
 4     True
 5    False
 6    False
 7     True
 8    False
 Name: 序号, dtype: bool
 ​
       名称   评分    产地  上映时间   时长 首映地点   序号
 2   美丽人生  9.5   意大利  1997  116  意大利  NaN
 4   霸王别姬  9.4  中国大陆  1993  171   香港  NaN
 7  疯狂动物城  9.3    美国  2016  109   美国  NaN
  • notnull()同理

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df["序号"]=['a','b',np.nan,'d',np.nan,'f','g',np.nan,'h']
 print(df)              #原表格
 print()
 a=df['序号'].notnull()  #判断缺失值
 print(a)              
 print()
 print(df[a])           #打印不是缺失值的DataFrame

输出结果:

      名称   评分    产地  上映时间   时长    首映地点   序号
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节    a
 1    控方证人  9.5    美国  1957  116      美国    b
 2    美丽人生  9.5   意大利  1997  116     意大利  NaN
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d
 4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f
 6  机器人总动员  9.3    美国  2008   98      美国    g
 7   疯狂动物城  9.3    美国  2016  109      美国  NaN
 8    城市之光  9.2    美国  1931   87      美国    h
 ​
 0     True
 1     True
 2    False
 3     True
 4    False
 5     True
 6     True
 7    False
 8     True
 Name: 序号, dtype: bool
 ​
        名称   评分  产地  上映时间   时长    首映地点 序号
 0  肖生克的救赎  9.8  美国  1994  142  多伦多电影节  a
 1    控方证人  9.5  美国  1957  116      美国  b
 3    阿甘正传  9.4  美国  1994  142   洛杉矶首映  d
 5   泰坦尼克号  9.4  美国  2012  194    中国大陆  f
 6  机器人总动员  9.3  美国  2008   98      美国  g
 8    城市之光  9.2  美国  1931   87      美国  h
 ​

2、填充缺失值

  • 格式:df[name].fillna(sth,inplace=True)

  • 参数:name:缺失值所对应的列名称无定义时表示对全部缺失值数据填充

sth:缺失值要填充的内容

inplace:True表示将df[name]缺失值替代填充值

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df["序号"]=['a','b',np.nan,'d',np.nan,'f','g',np.nan,'h']   #构建含有缺失值的DataFrame
 ​
 print(df) 
 df['序号'].fillna(0,inplace=True)
 print()
 print(df)

输出结果:

        名称   评分    产地  上映时间   时长    首映地点   序号
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节    a
 1    控方证人  9.5    美国  1957  116      美国    b
 2    美丽人生  9.5   意大利  1997  116     意大利  NaN
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d
 4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f
 6  机器人总动员  9.3    美国  2008   98      美国    g
 7   疯狂动物城  9.3    美国  2016  109      美国  NaN
 8    城市之光  9.2    美国  1931   87      美国    h
 ​
        名称   评分    产地  上映时间   时长    首映地点 序号
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节  a
 1    控方证人  9.5    美国  1957  116      美国  b
 2    美丽人生  9.5   意大利  1997  116     意大利  0
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映  d
 4    霸王别姬  9.4  中国大陆  1993  171      香港  0
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆  f
 6  机器人总动员  9.3    美国  2008   98      美国  g
 7   疯狂动物城  9.3    美国  2016  109      美国  0
 8    城市之光  9.2    美国  1931   87      美国  h

3、删除缺失值

  • 格式:df.dropna(how,axis,inplace)

  • 参数:how:为'all'意味删除全为空值的行和列,为any意味删除每行每列中有至少一个空值的行和列

axis:默认为0

inplace:=True表示覆盖原dataFrame,False表示不覆盖

 import pandas as pd
 import numpy as np
 df = pd.DataFrame([[1,np.nan,2,np.nan],[2,3,5,np.nan],[2,np.nan,4,np.nan]], index=list("abcd"), columns=list("1234"))
 print(df)
 print()
 print(df.dropna(how='all',axis="columns"))

输出结果:

 1    2  3   4
 a  1  NaN  2 NaN
 b  2  3.0  5 NaN
 c  2  NaN  4 NaN
 ​
    1    2  3
 a  1  NaN  2
 b  2  3.0  5
 c  2  NaN  4
  • df.dropna(inplace=True) #该操作是一个函数操作,返回none

 import pandas as pd
 import numpy as np
 df = pd.DataFrame([[1,np.nan,2,np.nan],[2,3,5,np.nan],[2,np.nan,4,np.nan]], index=list("abc"), columns=list("1234"))
 print(df)
 print()
 df.dropna(inplace=True,axis=1)
 print(df)

输出结果:

 1    2  3   4
 a  1  NaN  2 NaN
 b  2  3.0  5 NaN
 c  2  NaN  4 NaN
 ​
    1  3
 a  1  2
 b  2  5
 c  2  4

异常值处理(认为不妥的数据提取并处理)

  • 通过条件选择挑选出需要的数据,即异常值,再对异常值进行数据处理(和DataFrame的数据处理一样)

合并DataFrame数据

1、merage()函数

  • 格式:new_df = pd.merge(df1, df2, on='key')

  • 参数:key:为两个df都存在的列

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df1 = df[:5]
 df2 = df[-5::-1]

2、append()函数

3、join()函数

4、concat()函数

pandas 从excel导入数据

  • 格式:df = pd.read_execel(r"文件路径“)

pandas 数据excel保存

  • 格式:df.to_excel(r"文件路径“)

pandas 数据格式转换

查看数据类型

  • 格式:df["name"],dtype #返回数据的类型

  • 参数:name:要查看的行或列的名称

 import pandas as pd
 import numpy as np
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df["评分"].dtype)

输出结果:

        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
 float64

数据格式转换

  • 格式:df[name]=df[name].astype("type") #直接修改原表格的数据类型

  • 参数:name:行或列的名称

type:要转化的数据类型

  • df[name].astype("type") #返回一个修改过后的列或行的Series

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df["评分"].astype("int"))
 print()
 df["评分"]=df["评分"].astype("int")
 print(df)

输出结果:

 名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
 0    9
 1    9
 2    9
 3    9
 4    9
 5    9
 6    9
 7    9
 8    9
 Name: 评分, dtype: int32
 ​
        名称  评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎   9    美国  1994  142  多伦多电影节
 1    控方证人   9    美国  1957  116      美国
 2    美丽人生   9   意大利  1997  116     意大利
 3    阿甘正传   9    美国  1994  142   洛杉矶首映
 4    霸王别姬   9  中国大陆  1993  171      香港
 5   泰坦尼克号   9    美国  2012  194    中国大陆
 6  机器人总动员   9    美国  2008   98      美国
 7   疯狂动物城   9    美国  2016  109      美国
 8    城市之光   9    美国  1931   87      美国

pandas 数据排序

单个值排列

  • 格式:df.sort_values(by='name',ascending)

  • 参数:name:列的名称

ascending:等于False时表示降序排列,为True时表示升序排列,默认升序

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df.sort_values(by="上映时间", ascending=False))
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
        名称   评分    产地  上映时间   时长    首映地点
 7   疯狂动物城  9.3    美国  2016  109      美国
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 1    控方证人  9.5    美国  1957  116      美国
 8    城市之光  9.2    美国  1931   87      美国

多值排列

  • 格式:df.sort_values([name1, name2,...], ascending) #先进行name1排列,在进行name2排列

  • 参数:name:列的名称

ascending:默认升序

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 df = df[:7]
 print(df)
 print()
 print(df.sort_values(['评分','时长']))
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 ​
        名称   评分    产地  上映时间   时长    首映地点
 6  机器人总动员  9.3    美国  2008   98      美国
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节

pandas 数据基本统计分析

描述性统计(.describe()函数)

  • 格式:df.describe() #返回一个DataFrame类型

  • 用途:统计数值型数据的一些基本数值,如中位数,最大,最小等等

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 a = df.describe()
 print(a)
        评分         上映时间          时长
 count  9.000000     9.000000    9.000000
 mean   9.422222  1989.111111  130.555556
 std    0.171594    27.696771   34.943208
 min    9.200000  1931.000000   87.000000
 25%    9.300000  1993.000000  109.000000
 50%    9.400000  1994.000000  116.000000
 75%    9.500000  2008.000000  142.000000
 max    9.800000  2016.000000  194.000000

最值统计(.max()/.min()函数)

  • 格式:df[name].max() #返回name列下的最大值

    df[name].min() #返回name列下的最小值

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df["上映时间"].max())
 print(df["时长"].min())
 2016
 87

均值中值

  • 格式:df[name].mean() #返回name列下的均值

df[name].median() #返回name列下的中位数(类型均为float型)

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df["上映时间"].mean())
 print(df["时长"].median())
 1989.111111111111
 116.0

方差标准差

  • 格式:df[name].var() #返回name列下的数据的方差

df[name].std() #返回name列下的标准差(类型均为float型)

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df["上映时间"].var())
 print(df["时长"].std())

求和

  • 格式:df[name].sum() #返回name列下的数据的求和

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df["上映时间"].sum())
 17902

相关系数协方差

  • 格式:df.[[name1, name2]].corr() #返回name1和name2相关系数的一个DataFrame

df.[[name1, name2]].cov() #返回name1和name2协方差的一个DataFrame

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df[["评分","时长"]].corr())
 print(df[["评分","时长"]].cov())
           评分        时长
 评分  1.000000  0.329152
 时长  0.329152  1.000000
           评分           时长
 评分  0.029444     1.973611
 时长  1.973611  1221.027778

计数

1、计算行数据

  • 格式:len(df)

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(len(df))
 9

2、计算某列下不同元素的个数

  • 格式:df[name].unque() #返回一个含有name中元素的数组

len(df[name].unque()) #返回一个数

  • 参数:name:列的名称

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 a = df["评分"].unique()
 print(a)
 len(a)
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
 [9.8 9.5 9.4 9.3 9.2]
 ​
 5

3、计算某列的每个不同元素所出现的次数

  • 格式:df[name].value_counts() (返回一个name列的每个不同元素所出现的次数所构成的Series)

  • 参数:name:列的名字

 import pandas as pd
 df = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")
 print(df)
 print()
 print(df['评分'].value_counts())
        名称   评分    产地  上映时间   时长    首映地点
 0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节
 1    控方证人  9.5    美国  1957  116      美国
 2    美丽人生  9.5   意大利  1997  116     意大利
 3    阿甘正传  9.4    美国  1994  142   洛杉矶首映
 4    霸王别姬  9.4  中国大陆  1993  171      香港
 5   泰坦尼克号  9.4    美国  2012  194    中国大陆
 6  机器人总动员  9.3    美国  2008   98      美国
 7   疯狂动物城  9.3    美国  2016  109      美国
 8    城市之光  9.2    美国  1931   87      美国
 ​
 9.4    3
 9.3    2
 9.5    2
 9.8    1
 9.2    1
 Name: 评分, dtype: int64

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值