1.Series和DataFrame

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=['明日同学','高同学','七月流火'])

②访问

  1. []里面放索引名或列表
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.Series和DataFrame

④数据抽取

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球