pandas数据分析项目总结(一:基本信息检索、apply、合并)

原文地址:https://www.kesci.com/home/project/5c418c295c4cef002c33940d/code

注:代码是在Pycharm上写的。里面用到的数据来自国家统计局(http://data.stats.gov.cn/adv.htm?m=advquery&cn=E0105)。


1. pandas基本信息检索

(1)基本情况

import pandasas pd

df = pd.read_csv("2015年国内主要城市年度数据.csv")

print('--'*20, '\n【1】数据集基本情况探索')#--输出20次然后换行输出“【1】数据集基本情况探索”

print('\n>>>', df.shape, df.shape[0], df.shape[1])#样本形状(行数和列数)、样本数(行数,这里是36个省)、特征数(列数,这里是包括地名和11个指标)探索

print('\n>>>', df.index, df.index.tolist(), df.columns)#样本索引、索引转换成列表、列名探索

print('\n>>>', df['年份'].dtypes, '\n', df.dtypes)#某列类型、全部样本类型探索

print('\n>>>')

print(df.info())#样本基本情况探索,是上面方法的统一

(2)数量探索

print('--'*20, '\n【2】数量探索')

print('\n>>>', df['年份'].count(), '\n', df.count())#探索某列、全部样本非NA值的数量

print('\n>>>', df['年份'].values, '\n', df.values)# 探索某列的值,也可以探索全部样本的值

print('\n>>>', df['第一产业增加值(亿元)'].value_counts().head())# 探索某列中各元素值出现的次数(只能探索某列的),head代表看前5个

print('\n>>>', df['第一产业增加值(亿元)'].value_counts())# 探索某列中各元素值出现的次数(只能探索某列的)

print('\n>>>', df['国内生产总值(亿元)'].unique(), df.nunique())# 探索某列唯一值元素、每一列唯一值的数量

print('\n>>>', df.isnull().sum(), '\n', df.notnull().sum())# 探索每一列缺失值数量、不是缺失值数量

print('\n>>>', df['年份'].head(), '\n', df[['地区', '年份']].head())# 某列取值、多列取值

(3)相关性分析

print('--' *20, '\n【3】探索特征之间相关性')

print('\n>>>', df['年末总人口(万人)'].var(), df.var())# 探索某列、全部样本的方差

print('\n>>>', df['年末总人口(万人)'].std(), df.std())# 探索标准差

print('\n>>>', df.cov().iloc[:4, :4])# 探索变量间的协方差,iloc[:4, :4]代表只展示前4行前4列

print('\n>>>', df.corr().iloc[:4, :4])# 探索变量间的相关性

(4)汇总统计

print('--' *20, '\n【4】样本数据汇总统计')

print('\n>>>', df.sum())# 每一列求和

print('\n>>>', df['地区'].cumsum().head())# 某列逐行累加(可以全部样本每一列都累加)

print('\n>>>', df.max().head(), df.min().head())# 最大最小值

print('\n>>>', df['国内生产总值(亿元)'].idxmax(), '\n', df['国内生产总值(亿元)'].idxmin())# 返回 '国内生产总值' 列最大、最小值所对应的索引号

print('\n>>>', df.mean(), df.median())# 平均值、中位数

print('\n>>>', df.describe().T)# 汇总统计信息,是上面方法的统一,T是transverse行列转置

(5)数据抽样

有时候我们做研究分析或者数据量过大时,只希望抽取一部分数据做研究,因此要进行数据抽样处理

print('--' *20, '\n【5】数据抽样')

data = df.sample(n=5, replace=False)# 不放回随机抽样 5 个数据

print(data)

2. pandas中的应用函数apply

我们发现数据集中有浮点型数据,但是我们只需要整形数据,因此我们很有必要使用应用函数对原数据进行类型转换

apply(func[, args[, kwargs]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任何参数都不会被传递,kwargs是一个包含关键字参数的字典。

apply()的返回值就是func()的返回值,apply()的元素参数是有序的,元素的顺序必须和func()形式参数的顺序一致

import numpyas np

def fun(x):

x =int(x)

return x

f =lambda x: x +'QQ'    #lamda定义匿名函数,结果类似于x=xQQ,即输入北京,输出北京QQ

data1 = df['国内生产总值(亿元)'].apply(fun)

data2 = df['地区'].apply(f)

data3 = df.iloc[:, :].apply(np.sum)#每一列求和

print(data1.head(), '\n', data2.head(), '\n',data3)

3. 合并数据

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,

          keys=None, levels=None, names=None, verify_integrity=False)

objs:合并的目标;axis:需要合并的轴,0是行,1是列;join:连接的方式,innner是交集,outer是并集;

可以增加key参数来识别数据源自于哪张表,keys=['x', 'y', 'z']表示将三个合并的数据集分别表示为xyz;

如果有join_axes的参数传入,可以指定根据哪个轴来对齐数据,如根据df1表对齐数据,就会保留指定的df1表的轴,然后将其它的表与之拼接;

如果两个表的index都没有实际含义,使用ignore_index参数,置true,合并的两个表就根据列字段对齐,然后合并,最后再重新整理一个新的index;

链接:https://blog.csdn.net/mr_hhh/article/details/79488445

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,

        left_index=False, right_index=False, sort=True,

        suffixes=('_x', '_y'), copy=True, indicator=False,

        validate=None)

链接:https://blog.csdn.net/brucewong0516/article/details/82707492

import pandasas pd

df1 = pd.read_csv("2015年国内主要城市年度数据.csv")

df2 = pd.read_csv("2016年国内主要城市年度数据.csv")

df3 = pd.read_csv("2017年国内主要城市年度数据.csv")

df_1 = pd.concat(objs=[df1, df2, df3], axis=0)# 合并数据,以行的维度合并

df_2 = pd.merge(left=df1, right=df2, on='年份', how='outer')# 以指定值合并,在本案例中不实用

df_1.sample(n=7, replace=False)# 随机不放回抽样 7 个数据

你可能感兴趣的:(pandas数据分析项目总结(一:基本信息检索、apply、合并))