【Pandas】Python数据分析活用Pandas库学习笔记(一)

本文介绍了Python数据分析库Pandas的基础知识,包括DataFrame和Series的使用。通过实例展示了读取数据、数据切片、子集选择、分组聚合计算等功能,并探讨了数据的导入导出方法。此外,还讨论了Series的属性如loc和iloc,以及DataFrame的子集获取方法。
摘要由CSDN通过智能技术生成

引言

Python数据分析活用Pandas库学习笔记,博客中涉及的数据文件,下载下面的连接
数据资料链接:https://www.ituring.com.cn/book/download/37deb472-af30-4444-b791-92f983fe00c9

第1章 Pandas DataFrame 基础知识

"""
2021.02.18
author:alian
"""
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'D:\Python数据分析\Pandas\pandas_for_everyone-master\data\gapminder.tsv',sep='\t')  # 显示指明使用制表符分隔

# print(df.head())  # 获取前5行数据
# print(type(df))  # 获取对象类型
# print(df.shape)  # 获取对象的形状
# print(df.columns)  # 获取对象的列名
# print(df.dtype)  # 获取每列的类型
# print(df.info())  # 获取更多的数据信息

# 获取列子集
sub_df = df['country']
# print(sub_df.head())
# print(sub_df.tail())  # 显示后5行
sub_set = df[['country','continent','year']]  # 指定多列

# 获取行子集
# 基于索引标签获取
row1_df = df.loc[0]  # 第一行
rowlast_df = df.tail(n=1)  # 最后一行
# print(df.loc[[1,99,999]])
# 基于行号获取
row0_df = df.iloc[0]  # 第一行
row_df= df.iloc[-1]  # 最后一行

# 切片语法
# print(df.iloc[:, 0:6:2])  # 0-5列,步长为2
# print(df.iloc[:, 0:6:])  # 0-5列,步长为1
# print(df.iloc[:, 0::2])  # 0-最后一列,步长为2
# print(df.iloc[:, :6:2])  # 0-5列,步长为2
# print(df.iloc[:, ::2])  # 0-最后一列,步长为2
# print(df.iloc[:, ::])  # 0-最后一列,步长为1

# 分组和聚合计算
group = df.groupby('year')['lifeExp'].mean()
print(group)
group.plot()  # 绘制基本图形
plt.show()  # 一定要显示

在这里插入图片描述

第2章 Pandas数据结构

"""
2021.02.18
author:alian
Pandas 数据结构
Series相当于python内置的列表;DataFrame相当于python内置的字典
"""
import pandas as pd
import matplotlib as plt
import random

s = pd.Series(['banada','42'])
# print(s)
# 创建数据框
scientists = pd.DataFrame({
    'Name':['RosalineFranklin','William Gosset'],
    'Occupation':['Chemist','Statistician'],
    'Born':['1920-07-25','1876-06-13'],
    'Died':['1958-04-16','1937-10-16'],
    'Age':[37,61]
})
# print(scientists)
# 参数index:指定索引列;columns:指定列顺序
scientists1 = pd.DataFrame(
    data={
    'Name':['RosalineFranklin','William Gosset'],
    'Occupation':['Chemist','Statistician'],
    'Born':['1920-07-25','1876-06-13'],
    'Died':['1958-04-16','1937-10-16'],
    'Age':[37,61]
},
index = ['RosalineFranklin','William Gosset'],
columns = ['Occupation','Born','Died','Age'])
# print(scientists1)
# print(type(scientists1))
row = scientists1.loc['William Gosset']
# print(type(row))  # DataFrame的行对象得到一个Series对象,
# print(row.index)  # Series的索引属性
# print(row.values)  # Series的值属性
# print(row.keys())  # 等价于index属性

# Pandas.Series==numpy.ndarray
# 详见Serise的属性和方法

# 布尔子集:Serise
scientists = pd.read_csv(r'D:\Python数据分析\Pandas\pandas_for_everyone-master\data\scientists.csv')
ages = scientists['Age']
# print(ages)
# 获取基本统计量
# print(ages.describe())
# print(ages[ages>ages.mean()])  # 获取大于平均值的年龄
# print(ages>ages.mean())  # 判断年龄是否大于年龄均值
bool_index = [True,True,False,False,True,True,False,True]  # 用bool来索引
# print(ages[bool_index])
# print(ages.sort_index(ascending=False))

#  DataFrame
# 布尔子集:DataFrame
# print(scientists[scientists['Age']>scientists['Age'].mean()])

# 更改DataFrame和Serise
# 将Born列格式化为datetime
born_datatime = pd.to_datetime(scientists['Born'],format='%Y-%m-%d')
# print(born_datatime)
# 对列值进行随机化
# 方法一:设置随机种子,产生相同的随机数序列
random.seed(42)
random.shuffle(scientists['Age'])
# print(scientists['Age'])
# 方法二:使用random_state减少随机化()
scientists['Age'] = scientists['Age'].sample(len(scientists['Age']),random_state=24).reset_index(drop=True)
# 说明:reset_index(drop=True)为了仅打乱值,而不是携带索引的值,否则无法进行数值打乱
print(scientists['Age'])

# 删除值,axis = 1删除列,axis = 0 删除行
scientists_dropped = scientists.drop(['Age'],axis=1)

2.1 Serise

2.1.1 Serise的属性

Serise属性说明
loc使用索引标签取子集
iloc使用索引号取子集
dtype或dtypesSerise内容的类型
TSerise的转置矩阵
shape数据维度
sizeSerise元素的数量
values类似与ndarray的Serise

2.1.2 Serise的方法

Serise方法说明
describe获取Serise 的基本统计量,包括数量、均值、最大值、最小值等
append连接两个或多个Serise
corr计算与另一个Serise的相关系数*
cov计算与另一个Serise的协方差*
describe计算概括统计量*
drop_duplicates返回一个不含重复项的Serise
equals判断两个Serise是否有相同元素
get_values获取Serise的值,功能和values属性相同
hist绘制直方图
isin逐个检查Serise中的每个元素是否存在于参数指定的序列中
min返回最小值
max返回最大值
mean返回平均数
std返回标准差
median返回中位数
mode返回众数
quantile返回指定位置的四分位数
replace用指定值代替Serise中的值
sample返回Serise的随机采样值
sort_values对值进行排序
to_frame把Serise转换为DataFrame
transpose返回转置矩阵
unique返回由唯一值组成的numpy.ndarray

2.2 DataFrame

获取DataFrame子集的一些方法

方法执行结果
df[column_name]单列
df[[column1,column2,…]]多列
df.loc[row_label]使用行标签(行名)获取数列行
df.loc[[label1,label2,…]]使用索引标签获取多行
df.iloc[row_number]使用行号获取数据行
df.iloc[[row1,row2,…]]使用行号获取多行
df[bool]使用布尔值获取行
df[[bool1,bool2,…]]使用布尔值获取多行
df[start:stop:step]使用切片方法获取数据行

导出数据的方法

导出方法说明
to_pickle把数据保存为二进制格式
to_csv把数据保存为csv格式
to_excel把数据保存为excel格式
to_feather将数据储存二进制对象
to_clipboard把数据保存到系统剪贴板,方便粘贴
to_dense把稀疏对象转换为标准密集形式
to_dict把数据转换为标准python字典
to_gbq把数据转换为Goolgle BigQuery表
to_hdf把数据保存为HDP格式
to_msgpack把数据保存为类似JSON的便携二进制格式
to_html把数据转换为HTML表
to_json把数据转换成JSON字符串
to_latex把数据转换成LaTex表格环境
to_records把数据转换成记录数组
to_string把标准输出以字符串形式显示DataFrame
to_sparse把数据转换为SparceDataFrame
to_aql把数据保存到SQL数据库
to_stata把数据转换成Stata dta文件
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值