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 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: object1 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 pddata = {'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 pddata = [['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.742104a 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: objectNone名称 评分 产地 上映时间 时长 首映地点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 美国 h0 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 美国 h0 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'] #构建含有缺失值的DataFrameprint(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 NaN1 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 NaN1 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的个人笔记输入相关推荐
- pandas基础学习笔记(简略版)
pandas基础学习笔记(简略版) 1.DataFrame 2.series 3.基本数据操作 4.DataFrame 运算 5.pandas绘图 6.文本的读取与存储 1.DataFrame 既有行 ...
- Python模块之Pandas模块学习笔记
目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...
- Python numpy+pandas+matplotlib学习笔记
Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...
- Java实用教程笔记 输入、输出流
输入.输出流 期末考试会从10.1考到10.5 源&目的地 10.1File类 创建一个File对象的构造方法 文件属性 目录 创建目录 列出目录中的文件 FilenameFilter接口 辨 ...
- python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)
Pandas数据结构 pandas有两个基本的数据结构:Series和DataFrame. 1.1 创建Series数据 需要引入pandas模块:import pandas as pd 需要引入Se ...
- pandas模块学习笔记2--基本功能
一.重新索引 obj = Series([1,2,3,4],index=['a','b','c','d']) 输出为: a 1 b 2 c 3 d 4 Series有一个reindex函数,可以将索引 ...
- [2dPIC调试笔记]输入参数归一化1014(1)
%**********输入参数归一化*********% rnx = dx; % distance rnt = dt/2; % time rnv = rnx/rnt; % velocity rne = ...
- Pandas库学习笔记
import pandas as pd 两个数据类型:Series,DataFrame pandas是基于Numpy实现的扩展库,提供了高效地操作大型数据集所需的工具. Series类型由一组数据和与 ...
- Pandas 统计分析基础 笔记4 任务4.4 使用分组聚合进行组内计算
文章目录 pandas_任务4.4 使用分组聚合进行组内计算 4.4.1 使用groupby方法拆分数据 代码 4-51 对菜品订单详情表依据订单编号分组 代码 4-52 GroupBy 类求均值,标 ...
最新文章
- 使用dispatch_group来进行线程同步
- 【算法】算法测试题4:最长公共连续子串
- xrdp安装包linux,linux xrdp0.6 安装
- lisp精要(2)-基础(1)
- 缓存nginx服务器的静态文件
- 交多个朋友不如交一个朋友
- (五)门级电路低功耗设计优化
- 2016年度 JavaScript 展望(下)
- Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
- 函数名的使用、闭包、生成器
- 对象失去焦点时自己动提交数据
- 【转】C++11 标准新特性: 右值引用与转移语义
- Spring 注解编程之注解属性别名与覆盖
- ASP.NET 2.0使用Web Part创建应用程序之一(共二)
- 常见的几种网络抓包及协议分析工具
- 东芝2000ac废粉盒怎么二次利用_阜新降级组件回收厂家,废太阳能板回收_振昌_光伏...
- Windows 技巧集
- html控制变量范围,加入控制变量后结果悲催了?!
- 计算机科学与技术要求具备的能力,计算机科学与技术专业毕业要求
- 20200205 打印沙漏