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 pdpd = pd.Series([1,3,5,"nihao",6,8])print(pd)

输出结果:

 0        11        32        53    nihao4        65        8dtype: object

字典创建

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

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

输出的结果:

 1    Google2    Runoob3      Wikidtype: object​1    Google2    Runoobdtype: object

通过索引修改标签

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

输出结果:

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

查看series中的 元素值

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

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

输出结果:

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

查看series中的 索引值

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

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

输出结果:

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

series中的 切片操作

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

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

series中的 索引赋值

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

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

 import pandas as pdimport numpy as npa = pd.Series([1,3,5,np.nan,6, 8])a.index.name="索引"print(a)
 索引0    1.01    3.02    5.03    NaN4    6.05    8.0dtype: float64

根据 索引值 读取数据

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

 import pandas as pdpd = 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 pddate = 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  Age0  Google   101  Runoob   122    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   Age0  Google  10.01  Runoob  12.02    Wiki  13.0

DateFrame修改行标签列标签

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

  • 参数:

    • date:数组或字典

    • name1:一个一维结构

    • name2:一个一维结构

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

输出结果:

                    a         b         c         d2018-10-10  0.250326 -0.960180  0.878228 -0.3036922018-10-11  1.158560 -2.243116  0.728646  0.1825292018-10-12 -1.302296 -0.379934 -0.707340 -0.0850852018-10-13  0.699283  0.727865 -1.912914 -1.6158792018-10-14  0.036541  0.820634 -0.369240 -0.6786242018-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 pddate = 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         d2018-10-10  0.884416 -0.596544  0.291676 -1.6656362018-10-11 -0.549690 -0.764856 -0.759004 -1.2793592018-10-12 -0.402498 -0.346603 -1.304580  1.4020602018-10-13  0.899449  0.850684 -1.381475  0.5919092018-10-14  1.124828  0.075241 -1.488315  1.742104​a         b         c         d2018-10-13  0.899449  0.850684 -1.381475  0.5919092018-10-14  1.124828  0.075241 -1.488315  1.7421042018-10-15  1.460785  0.162398  0.058642  0.982680

2、查看 行标签

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

 import pandas as pddate = 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 pddate = 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 pddate = 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 pddf = 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 pddf = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")dit = {"名称":'复仇者联盟3', '评分':8.4, '产地':'美国', '上映时间':2018, '时长':200, '首映地点':'美国'}s = pd.Series(dit)s.name=6df = 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 pddf = 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 pddf = 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 pddf = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")df['序号']=list('abcdef')print(df)

输出结果:

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

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

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

  • 参数:name:列的名称

 import pandas as pddf = 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 pddf = 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  控方证人  19572  美丽人生  19973  阿甘正传  1994

4、条件选择

运用"=="选择数据

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

df.columns=='name'

  • 参数:columns:表示列标签

name:列标签中的某个元素

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

输出结果:

 0    False1    False2     True3    False4    False5    False6    False7    False8    FalseName: 产地, dtype: bool名称   评分   产地  上映时间   时长 首映地点2  美丽人生  9.5  意大利  1997  116  意大利

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

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

 import pandas as pddf = 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 pddf = 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 pddf = 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 pddf = 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 返回一个布尔值对象,判断哪些值是缺失值
notnull isnull的否定式

1、判断缺失值

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

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

  • 参数:columns:列的名称

 import pandas as pddf = 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  多伦多电影节    a1    控方证人  9.5    美国  1957  116      美国    b2    美丽人生  9.5   意大利  1997  116     意大利  NaN3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f6  机器人总动员  9.3    美国  2008   98      美国    g7   疯狂动物城  9.3    美国  2016  109      美国  NaN8    城市之光  9.2    美国  1931   87      美国    h​0    False1    False2     True3    False4     True5    False6    False7     True8    FalseName: 序号, dtype: bool​名称   评分    产地  上映时间   时长 首映地点   序号2   美丽人生  9.5   意大利  1997  116  意大利  NaN4   霸王别姬  9.4  中国大陆  1993  171   香港  NaN7  疯狂动物城  9.3    美国  2016  109   美国  NaN
  • notnull()同理

 import pandas as pddf = 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  多伦多电影节    a1    控方证人  9.5    美国  1957  116      美国    b2    美丽人生  9.5   意大利  1997  116     意大利  NaN3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f6  机器人总动员  9.3    美国  2008   98      美国    g7   疯狂动物城  9.3    美国  2016  109      美国  NaN8    城市之光  9.2    美国  1931   87      美国    h​0     True1     True2    False3     True4    False5     True6     True7    False8     TrueName: 序号, dtype: bool​名称   评分  产地  上映时间   时长    首映地点 序号0  肖生克的救赎  9.8  美国  1994  142  多伦多电影节  a1    控方证人  9.5  美国  1957  116      美国  b3    阿甘正传  9.4  美国  1994  142   洛杉矶首映  d5   泰坦尼克号  9.4  美国  2012  194    中国大陆  f6  机器人总动员  9.3  美国  2008   98      美国  g8    城市之光  9.2  美国  1931   87      美国  h​

2、填充缺失值

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

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

sth:缺失值要填充的内容

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

 import pandas as pddf = 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  多伦多电影节    a1    控方证人  9.5    美国  1957  116      美国    b2    美丽人生  9.5   意大利  1997  116     意大利  NaN3    阿甘正传  9.4    美国  1994  142   洛杉矶首映    d4    霸王别姬  9.4  中国大陆  1993  171      香港  NaN5   泰坦尼克号  9.4    美国  2012  194    中国大陆    f6  机器人总动员  9.3    美国  2008   98      美国    g7   疯狂动物城  9.3    美国  2016  109      美国  NaN8    城市之光  9.2    美国  1931   87      美国    h​名称   评分    产地  上映时间   时长    首映地点 序号0  肖生克的救赎  9.8    美国  1994  142  多伦多电影节  a1    控方证人  9.5    美国  1957  116      美国  b2    美丽人生  9.5   意大利  1997  116     意大利  03    阿甘正传  9.4    美国  1994  142   洛杉矶首映  d4    霸王别姬  9.4  中国大陆  1993  171      香港  05   泰坦尼克号  9.4    美国  2012  194    中国大陆  f6  机器人总动员  9.3    美国  2008   98      美国  g7   疯狂动物城  9.3    美国  2016  109      美国  08    城市之光  9.2    美国  1931   87      美国  h

3、删除缺失值

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

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

axis:默认为0

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

 import pandas as pdimport numpy as npdf = 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   4a  1  NaN  2 NaNb  2  3.0  5 NaNc  2  NaN  4 NaN​1    2  3a  1  NaN  2b  2  3.0  5c  2  NaN  4
  • df.dropna(inplace=True) #该操作是一个函数操作,返回none

 import pandas as pdimport numpy as npdf = 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   4a  1  NaN  2 NaNb  2  3.0  5 NaNc  2  NaN  4 NaN​1  3a  1  2b  2  5c  2  4

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

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

合并DataFrame数据

1、merage()函数

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

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

 import pandas as pddf = 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 pdimport numpy as npdf = 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 pddf = 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    91    92    93    94    95    96    97    98    9Name: 评分, 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 pddf = 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 pddf = 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 pddf = pd.read_excel(r"C:\Users\梁家华\Desktop\工作簿1.xlsx")a = df.describe()print(a)
        评分         上映时间          时长count  9.000000     9.000000    9.000000mean   9.422222  1989.111111  130.555556std    0.171594    27.696771   34.943208min    9.200000  1931.000000   87.00000025%    9.300000  1993.000000  109.00000050%    9.400000  1994.000000  116.00000075%    9.500000  2008.000000  142.000000max    9.800000  2016.000000  194.000000

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

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

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

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

均值中值

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

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

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

方差标准差

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

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

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

求和

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

 import pandas as pddf = 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 pddf = 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 pddf = 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 pddf = 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 pddf = 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    39.3    29.5    29.8    19.2    1Name: 评分, dtype: int64

pandas的个人笔记输入相关推荐

  1. pandas基础学习笔记(简略版)

    pandas基础学习笔记(简略版) 1.DataFrame 2.series 3.基本数据操作 4.DataFrame 运算 5.pandas绘图 6.文本的读取与存储 1.DataFrame 既有行 ...

  2. Python模块之Pandas模块学习笔记

    目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...

  3. Python numpy+pandas+matplotlib学习笔记

    Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...

  4. Java实用教程笔记 输入、输出流

    输入.输出流 期末考试会从10.1考到10.5 源&目的地 10.1File类 创建一个File对象的构造方法 文件属性 目录 创建目录 列出目录中的文件 FilenameFilter接口 辨 ...

  5. python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)

    Pandas数据结构 pandas有两个基本的数据结构:Series和DataFrame. 1.1 创建Series数据 需要引入pandas模块:import pandas as pd 需要引入Se ...

  6. pandas模块学习笔记2--基本功能

    一.重新索引 obj = Series([1,2,3,4],index=['a','b','c','d']) 输出为: a 1 b 2 c 3 d 4 Series有一个reindex函数,可以将索引 ...

  7. [2dPIC调试笔记]输入参数归一化1014(1)

    %**********输入参数归一化*********% rnx = dx; % distance rnt = dt/2; % time rnv = rnx/rnt; % velocity rne = ...

  8. Pandas库学习笔记

    import pandas as pd 两个数据类型:Series,DataFrame pandas是基于Numpy实现的扩展库,提供了高效地操作大型数据集所需的工具. Series类型由一组数据和与 ...

  9. Pandas 统计分析基础 笔记4 任务4.4 使用分组聚合进行组内计算

    文章目录 pandas_任务4.4 使用分组聚合进行组内计算 4.4.1 使用groupby方法拆分数据 代码 4-51 对菜品订单详情表依据订单编号分组 代码 4-52 GroupBy 类求均值,标 ...

最新文章

  1. 使用dispatch_group来进行线程同步
  2. 【算法】算法测试题4:最长公共连续子串
  3. xrdp安装包linux,linux xrdp0.6 安装
  4. lisp精要(2)-基础(1)
  5. 缓存nginx服务器的静态文件
  6. 交多个朋友不如交一个朋友
  7. (五)门级电路低功耗设计优化
  8. 2016年度 JavaScript 展望(下)
  9. Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
  10. 函数名的使用、闭包、生成器
  11. 对象失去焦点时自己动提交数据
  12. 【转】C++11 标准新特性: 右值引用与转移语义
  13. Spring 注解编程之注解属性别名与覆盖
  14. ASP.NET 2.0使用Web Part创建应用程序之一(共二)
  15. 常见的几种网络抓包及协议分析工具
  16. 东芝2000ac废粉盒怎么二次利用_阜新降级组件回收厂家,废太阳能板回收_振昌_光伏...
  17. Windows 技巧集
  18. html控制变量范围,加入控制变量后结果悲催了?!
  19. 计算机科学与技术要求具备的能力,计算机科学与技术专业毕业要求
  20. 20200205 打印沙漏

热门文章

  1. 后端开发常见面试题目
  2. Kubemetes网络插件cni
  3. 意迷观看欧冠决赛慌乱踩踏 公共安防再次升级
  4. 解决禅道(ZenTao)Mysql启动不了的问题
  5. !!非null,非undefined,非空,非空格的字符串验证 。
  6. BNET技术更新 Weekly 1
  7. 大学计算机算法程序框图,2019高考真题:算法与程序框图,专题解析
  8. NUCLEO-F767ZI以太网初探
  9. mysql 只显示第一条记录_MySQL:此种查询结果,怎么仅保留第一条记录?
  10. 解决提交到github报错Please tell me who you are