数据结构----Series
1.创建Series
import pandas as pd
a = [apple,banana,orange]
myvar = pd.Series(a)
print(myvar)
输出:
没有指定索引,索引值从0开始,可根据索引值读取数据
print(myvar[1]) #输出banana
指定索引值
import pandas as pd
a = [apple,banana,orange]
myvar = pd.Series(a,index = ["x","y","z"])
print(myvar)
输出
利用key/value对象,类似字典来创建Series
import pandas as pd
a = {1:"apple",2:"banana",3:"orange"}
myvar = pd.Series(a)
print(myvar)
2.Series的访问
import pandas as pd
a = pd.Series([1,2,3,4,5])
print(a[1:4])
print(a[:-1])
结果:
3.数组间的运算
import pandas as pd
a = pd.Series([1,2,3,4,5])![在这里插入图片描述](https://img-blog.csdnimg.cn/20210518171447443.png)
print(a.mean())
b = pd.Series([2,3,4,5,6])
print(a + b)
print(a * 2)
print(a[a >= 3])
结果:
数据结构----DataFrame
Pandas DataFrame是一个二维的数组结构,类似于二维数组,表格型的数据结构。
1.创建DataFrame
1)使用列表创建
import pandas as pd
data = [['Tom',11],['Jack',20],['Yan',13]]
df = pd.DataFrame(data,columns=['name','age'],dtype = float)
print(df)
2)使用ndarry创建
import pandas as pd
data = {'name':['Tom','Jack','Yan'],'age':[11,20,13]}
df = pd.DataFrame(data)
print(df)
3)使用字典创建
import pandas as pd
data = [{'name':'Tom','age':11},{'name':'Jack','age':20},{'name':'Yan','age':13}]
df = pd.DataFrame(data)
print(df)
pandas可以使用loc属性返回指定行的数据,如果没有设置索引,第一行索引为0,第二行索引为1,以此类推…
print(df.loc[0]) #返回第一行
print(df.loc[1]) #返回第二行
输出结果:
指定索引值
import pandas as pd
data = {"calories":[420,300,280],"duration":[50,40,45]}
df = pd.DataFrame(data, index = ["day1","day2","day3"])
print(df)
结果为:
print(df.loc["day2"])
2.数组的运算操作
import pandas as pd
data = {'day1':[1,2],'day2':[3,4]}
a = pd.DataFrame(data)
data1 = {'day1':[1,3],'day2':[1,4]}
b = pd.DataFrame(data1)
print(a + b)
print(a * 2)
print(a > 1)
结果:
3.DataFrame的查看
df.head() #查看前面n行的数据,不填则返回前5行
df.info() #返回DataFrame的信息
df.index #返回df的索引值
df.columns #返回df的列名
df.dtypes #返回df的列数据类型
df.values #返回df中的数据,返回类型为numpy。ndarray类型
4.groupby操作
groupby表示分组聚合操作,是pandas中常见的操作
df = pd.DataFrame({'key':['A','B','C'],'data':[0,5,10]})
print(df.groupby('key').sum())
csv文件
读取csv文件
import pandas as pd
df = pd.read_csv('filename.csv')
print(df.to_string())
to_string()用于返回DataFrame类型的数据,若不使用该函数,则输出结果为数据前5行和后5行,其他部分以……代替。
to_csv()
将DataFrame存储为csv文件
import pandas as pd
a = ["tom","jack","mary"]
b = ["boy","boy","girl"]
c = [18,20,17]
#字典
dict = {'name':a,'sex':b,'age':c}
df = pd.DataFrame(dict)
df.to_csv('people.csv') #保存dataframe
数据读取
import pandas as pd
df = pd.read_csv('filename.csv')
print(df.head()) #读取前面n行,不填则返回5行
print(df.tail()) #读取后面n行,不填则返回5行空行个字段的值返回NaN
print(df.info()) #info返回表格的一些基本信息
数据处理
1.缺失值的检测和处理
df = pd.DataFrame({'c1':[0,1,2,None],'c2':[1,None,2,3]})
print(df)
print(df.isnull()) #有缺返回Ture,不缺返回False
print(df.isnull().sum()) #sum()可得到行和列的缺失值的汇总
2.填补缺失值
df.fillna(df.mean() #用平均值填补
df.fillna(1) #用指定值1填补
df.fillna(method = 'bfill',limit = 1) #使用缺失值后面的数据填补,limit是限制连续填充,这里选择1表示1列中有多个缺失值相邻时,只填充最近的一个缺失值
df.fillna(method='pad') #使用缺失值前面的数据填充
3.去除缺失值dropna()函数
当缺失值较少时,可用填充的方式完善数据集,但当缺失值较多且重要程度不高时,可以选择去除这些没有价值的数据。
data.dropna(how = 'all') # 传入这个参数后将只丢弃全为缺失值的那些行
data.dropna(axis = 1) # 丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
data.dropna(axis=1,how="all") # 丢弃全为缺失值的那些列
data.dropna(axis=0,subset = ["Age", "Sex"]) #丢弃‘Age’和‘Sex’这两列中有缺失值的行
3.去除异常值
往往根据不同的情况设置不同的条件去除异常值
df = pd.DataFrame({'Name':['A','B','C'],'Age':[-1,20,300]})
print(df)
print(df.query("Age >= 0 and Age <= 110"))
相互矛盾的数据也视为异常值
data = {'Age':[16,17,20,21],'Age_label':['teen','adult','adult','teen']}
df = pd.DataFrame(data)
data1 = df.query("(Age >= 18 and Age_label == 'adult') or (Age < 18 and Age_label == 'teen')")
print(data1)
4.去重和冗余信息drop_duplicates
df = pd.DataFrame({'a':[1,1,2,2],'b':[3,3,6,6]})
print(df.drop_duplicates())
去除指定列
df.drop('b',axis = 1) #axis=0为行,1为列