pandas数据处理基础-数据读取/数据选择
数据读取
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')
- 数据计算,例如:
DataFrame.add
等。 - 数据聚合,例如:
DataFrame.groupby
等。 - 统计分析,例如:
DataFrame.abs
等。 - 时间序列,例如:
DataFrame.shift
等。