pandas数据处理基础-数据读取/数据选择

发布时间 2023-04-17 12:37:04作者: 一一zp

数据读取

df=pd.read_csv("相对路径或者网址") 呈现的结果是一个二维数组,dataframe结构;

df.head()----显示的是前5行数据

df.tail(7)----显示的是后7行数据

df.describe()----对数据进行描述

df.values----将dataframe转换为numpy数组结构

df.index--查看索引 df.columns--查看行名  df.shape--查看形状

数据选择

基于索引数字选择  df.iloc[]

df.iloc[:3]--选择前3行数据

df.iloc[5]--选择第6行

df.iloc[[1,3,5]]--选择第2,4,6行数据(因为[]中有[行,列])

df.iloc[:,1:4]--选择第2-4列

df.iloc[1:4,3:6]--选择第2-4行和第4-6列

基于标签名称选择  df.loc[] 

df.loc[0:2]--代表的是第1-3行,df.iloc[0:2]--代表的是第1-2行

df.loc[1:4,'Total Males':]---选择连续的行,用:的话不需要[],选择不连续的行,用[]。

数据删减

df.drop(labels=['Median Age', 'Total Males'],axies=1)---labels不要也可以,直接df.drop(['Median Age', 'Total Males'],axies=1)---或者df.drop(columns=['Median Age', 'Total Males'])

df.drop([0,1])--删掉0,1行

df.drop_duplicates()--剔除数据集中的重复行

df.drop_duplicates(subsets=['Total Population'])--subsets删除指定列的重复数据

df.drop_duplicates(subset=['Total Population'], keep='last')---keep删除重复项并保留最后一次出现

df.dropna()--删除缺少值

数据填充

需要先检测是否有缺失值

检测缺失值

NaN指not a number;NaT指 not a TIME 时间戳的缺失

#df=pd.DataFrame(np.random.rand(9,5),columns=list('ABCDE'))----创建9✖5的矩阵,总共5列

#df.insert(value=pd.Timestamp('2017-10-1'),loc=0,column='Time')--在第一列插入列名是Time的内容为2017-10-1的时间序列

#df.iloc[[1,3,5,7],[0,2,4]]=np.nan--缺失值赋值

df.isna()--是否是缺失值      

对于缺失值处理的方法— 1、填充 2、剔除

剔除直接用dropna()

填充用fillna()

1)直接用标量填充 df.fillna(0);

2)通过参数将缺失值前面或后面的值填充给缺失值;前面--df.fillna(method='pad'),后面--df.fillna(method='bfill');

df.fillna(method='pad',limit=1)--对于连续缺失值向前填充,可以限制填充行数;

3)用平均值填充指定列 df.fillna(df.mean()['C':'E'])

df.fillna(df.mean()[0:3])--???为什么是第1到第3列填充

插值填充

interpolate()--线性插值

方法:method='quadratic'---如果数据增长速率越来越快,用此方法; method='pchip'---数据集呈现出累计分布的样子;

method='akima'--需要填补缺省值,以平滑绘图为目标;

数据可视化

NumPy,Pandas,Matplotlib 构成了一个完善的数据分析生态圈,所以 3 个工具的兼容性也非常好,甚至共享了大量的接口。

当我们的数据是以 DataFrame 格式呈现时,可以直接使用 Pandas 提供的 DataFrame.plot()方法调用 Matplotlib 接口绘制常见的图形。

df_interpolate.plot()---df_interpolate即为DataFrame的表名

其他样式的图形指定 kind= 参数即可,如柱状图

df_interpolate.plot(kind='bar')