Python学习笔记(8)Pandas统计分析1

1 读写不同数据源的数据

1.1 文本文件读取与储存

pandas.read_csv(filepath_or_buffer, sep=’,’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)

sep--分隔符,read_csv默认为",",read_table默认为制表符。

header--表示将某行数据作为列名,默认infer为自动识别

names--列名

index_col--索引列位置

DataFrame.to_csv(path_or_buf=None, sep=’,’, na_rep=”, columns=None, header=True, index=True,index_label=None,mode=’w’,encoding=None)

1.2 excel文件读取与储存

 pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)

dtype--接收字典

DataFrame.to_excel(excel_writer=None, sheetname=None’, na_rep=”, header=True, index=True, index_label=None, mode=’w’, encoding=None)

2 DataFrame常规操作

2.1 查看访问DataFrame中的数据

2.1.1 访问一列

使用字典访问:DataFrame['列名称']

使用访问属性:DataFrame.列名称 #(不推荐)

2.1.2 访问单列多行

访问这一列的前五个元素(含表头):DataFrame['列名称'][:5]

访问多列的多行数据:DataFrame['列名称1','列名称2'][:5]

2.1.3 访问多行数据

DataFrame[:][1:5]

2.1.4 head和tail函数获取多行数据

DataFrame.head()前5行

DataFrame.tail()后5行

默认都是5,可在()内添加访问行数

2.1.5 loc和iloc函数单列切片

DataFrame.loc[:, ‘列名称’]

DataFrame.iloc[:, 列索引]

2.1.6 loc和iloc函数多列切片

DataFrame.loc[:, ['列名称1', '列名称2']]

DataFrame.iloc[:, [1, 3]]  #提取第一列和第三列

2.1.7 loc和iloc函数花式切片

DataFrame.loc[2:6, ['列名称1', '列名称2']] # #行名为2-6 列名为列名称1 列名称2的数据

loc函数传入的索引若为区间,则是闭区间

DataFrame.iloc[2:7, [1,3] ] #列位置为1 3 行位置为2-6

iloc函数传入的索引若为区间,则是前闭后开区间

2.1.8 loc和iloc函数条件切片

DataFrame.loc[data_csv["writing score"] == a,['列名称']]

DataFrame.iloc[(data_csv["writing score"] == a).values, [列索引]]

2.2 更改DataFrame中的数据

原理:提取出来,重新赋值,但是会更改原数据

DataFrame.loc[DataFrame['abc']=100, 'abc'] = '1'#将abc中等于100的值换位1

2.3 增添DataFrame中的数据

2.3.1 新增一列非定值

DataFrame['新增列名称'] = DataFrame['列名称1']*DataFrame['列名称2']

2.3.2 新增一列定值

DataFrame['新增列名称'] = '新增列的值'

2.3.3 指定位置插入列

DataFrame.insert(列索引, 列名称, 数据, allow_duplicates=False)

最后一项参数为,是否允许列名重复

2.3.4 指定位置插入行

pd.append()  只能实现在最后增加一行,需要将原始的DataFrame拆分,再插入数据后将其合并。

# 待插入行索引
row_n = 1
# 待插入数据,以一维列表为例
d = [["*"] * 4]
# 拆分
DataFrame1 = [:row_n]
DataFrame2 = [row_n:]
# 参数:添加数据,是否无视行索引
DataFrame = DataFrame1.append(d,ignore_index=True).append(DataFrame2,ignore_index=True)
def df_insert(df, n, arr, ignore_index=True):
 """
 DataFrame任意位置添加一行
 :param df: DataFrame
 :param n: 添加行号索引
 :param arr: 添加数据
 :param ignore_index: 是否无视行索引,为True则重新从0生成df的行号
 :return: DataFrame
 """
 # 如果原df列名被修改,则需要给新插入的行也赋予列名
 # arr = pd.DataFrame(np.array(arr).reshape((1, len(arr))), columns=df.columns)
 # 否则直接插入二维数组即可
 arr = [arr]
 df1 = df[:n]
 df2 = df[n:]
 df0 = df1.append(arr, ignore_index).append(df2, ignore_index)
 return df0
 

# 待插入行索引
row_n = 1
# 待插入数据,以一维列表为例
d = ["*"] * 4
# 调用方法
pd_arr = df_insert(pd_arr, row_n, d)

2.4 删除DataFrame中的数据

DataFrame.drop(labels, axis, inplace)

labels--删除行或者列的标签

axis--0为横轴 1为纵轴,默认为0

inplace--操作是否对原数据生效,默认为False

2.4.1 删除列

labels为列标签

2.4.2 删除行

labels为行索引,可用range函数

2.5 描述分析DataFrame

 2.5.1 数据型特征的描述性统计

中位数median 极差ptp 标准差std 协方差cov 

1)np.mean求某一列的均值

np.mean(DataFrame['列名称'])

2)pandas实现求某一列均值

DataFrame['列名称'].mean()

3)describe函数实现数值型特征的描述性统计

DataFrame[['列名称1', '列名称2']].discribe()

2.5.2 类别型特征的描述性统计

sem标准误差 skew样本偏差 quantile四分位数 mode众数 kurt样本峰值 

对某一类频数出现前十名进行统计

DataFrame['列名称'].value_counts()[0: 10]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值