0.文件的导入和导出
① Excel
1.导入表格
df=pd.read_excel('1月.xlsx',sheet_name='莫寒')
不指定sheet则导入第一张
2.导入指定列
df1 = pd.read_excel('1月.xlsx', usecols=[0, 3]) #通过指定列索引号导入第0列、第3列
3.指定行列索引
df1=pd.read_excel('1月.xlsx',index_col=0) #设置"买家会员名"为行索引
df2=pd.read_excel('1月.xlsx',header=1) #设置第1行为列索引
header = None则指定为数字
1.Series对象
①创建
s = pd.Series(data,index=)
s2=pd.Series([88,60,75],index=['明日同学','高同学','七月流火'])
②访问
- []里面放索引名或列表
print(s1['明日同学']) #通过一个标签索引获取索引值
print(s1[['明日同学','七月流火']]) #通过多个标签索引获取索引值
2.切片
s1[‘明日同学’:’七月流火’]
s1[1:4] 输出下标为1,2,3的
③两个属性
s1.index 获取索引
s1.values 获取值
2.DataFrame对象
①创建
1.二维列表创建
data = [[110,105,99],[105,88,115],[109,120,130],[112,115,140]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
2.字典创建
df = pd.DataFrame({
'语文':[110,105,99],
'数学':[105,88,115],
'英语':[109,120,130],
'班级':'高一7班'
},index=[0,1,2])
键就是列名,只需指定行名index了
②重要属性和函数
④数据抽取
1.直接df[列名]
2.loc和iloc属性
前者列名行名,后者数字索引
第一个参数为行参数,第二个为列参数
print(df.loc[['明日','高袁圆']])
print(df.iloc[[0,2]]) #访问0和2行
同Series,[]里面放 行索引名或者行索引名列表
print(df.loc['明日':'二月二']) #从"明日"到"二月二"
print(df.loc[:'七月流火']) #第1行到"七月流火"
print(df.iloc[0:4]) #第1行到第4行
print(df.iloc[1::]) #第2行到最后1行
注意,iloc[0:4]只有下标0,1,2,3的
print(df.iloc[1::,[0,2]]) #第2行到最后一行的第1列和第3列
print(df.iloc[:,2]) #所有行,第3列
两个参数也差不多
3.df.iat[,]选取某个坐标的数据
4.条件选取
print(df.loc[(df['语文'] > 109)])
》》
语文 数学 英语
明日 110 105 99.0
二月二 112 115 NaN
⑤数据增删改
1.增
①通过a[“列名”],loc函数直接赋值
②或者
df.insert(1,"物理",[90,87,63])
③增加多行数据
df_insert = pd.DataFrame({'语文':[100,123,138],'数学':[120,142,60],'英语':[99,139,99]},index = ['钱多多','童年','无名'])
df1 = df.append(df_insert)
2.删
以下是删除两列,行类似
df1.drop(['数学',"语文"],axis=1,inplace=True)
3.改
①改行标列标
直接赋值,或者用rename函数,以下修改行,修改列同理
df.index=list('1234')
df.rename({'明日':1,'七月流火':2,'高袁圆':3,'二月二':4},axis=0,inplace = True)
②改数据
通过loc,iloc直接赋值
df.loc[:,'语文']=[115,108,112,118]
⑥数据清洗
1.缺失值
df.info()
df.isnull()
df.notnull()
处理:
①删除有缺失值的行,(只要该行有缺失值,就删除)
df.dropna(inplace=True)
②只删除特定列空值的行
df = df.loc[df["宝贝总数量"].notnull()]
③填充空值
df=df["宝贝总数量"].fillna(0) #此行错误,会出大问题
df["宝贝总数量"]=df["宝贝总数量"].fillna(0)
2.重复值
①检测该行是否与前面行完全相同,返回每行的布尔值
print(df.duplicated())
②删除重复行
print(df.drop_duplicates())
print(df.drop_duplicates(["宝贝标题"],keep="last")) #keep=False表示去除所有重复行
3.异常值
p = df > 100
print(p)
df = df.loc[p["英语"]]
print(df)
》》
语文 数学 英语
明日 110 105 99
七月流火 105 88 115
高袁圆 109 120 130
二月二 112 115 140
语文 数学 英语
明日 True True False
七月流火 True False True
高袁圆 True True True
二月二 True True True
语文 数学 英语
七月流火 105 88 115
高袁圆 109 120 130
二月二 112 115 140
Process finished with exit code 0
p = df.std()
print(p["英语"])
⑦索引设置
1.series重设索引
之前的df.index = 实际上是索引重命名
from pandas import Series
s1=Series([88,60,75],index=[1,2,3])
print(s1)
s1=s1.reindex([1,2])
print(s1)
》》
1 88
2 60
3 75
dtype: int64
1 88
2 60
dtype: int64
2.dataframe重设索引
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110,105,99],[105,88,115],[109,120,130]]
index=['mr001','mr003','mr005']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=index,columns=columns)
print(df)
print(df.reindex(index=['mr001','mr002','mr003','mr004','mr005'],columns=['语文','物理','数学','英语']))
》》
语文 数学 英语
mr001 110 105 99
mr003 105 88 115
mr005 109 120 130
语文 物理 数学 英语
mr001 110.0 NaN 105.0 99.0
mr002 NaN NaN NaN NaN
mr003 105.0 NaN 88.0 115.0
mr004 NaN NaN NaN NaN
mr005 109.0 NaN 120.0 130.0
3.设置某列为行索引
df = df.set_index([“买家会员名”])
4.把不连续的索引重新设为连续
df=df.reset_index(drop = Ture)
⑧数据排序与排名
1.排序
df.sort_values(by=['图书名称','销量'],ascending=[True,True])
2.分组排序
df1=df.groupby(["类别"])["销量"].sum().reset_index()
df2=df1.sort_values(by='销量',ascending=False)
3.排名
顺序排名和平均值排名 (1,2,3)(1,2.5,2.5)
df['顺序排名'] = df['销量'].rank(method="first", ascending=False)
Original: https://blog.csdn.net/weixin_44593786/article/details/121654168
Author: 路远8293
Title: 1.Series和DataFrame
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752903/
转载文章受原作者版权保护。转载请注明原作者出处!