python-Series-DataFrame

1 数据分析常用开源库

Pandas

  • 基于Numpy - 特点高效的科学计算库, 核心的数据对象 是 ndarray n维数组

  • Series 一列数据

  • DataFrame 二维表

绘图的库最基础的 Matplotlib

  • Pandas 有绘图的API 基于 Matplotlib

  • Seaborn 基于 Matplotlib

2 Notebook的使用

在控制台启动 anaconda prompt

jupyter notebook

在Pycharm中使用 给项目添加Python解释器, 使用conda enviroment

在项目的目录下新建一个Notebook

启动之后可能遇见的问题

弹窗口, jupyter进程直接杀死, 报错是bad file descriptor

  • 是pyzmq包的问题, 把它卸载掉, 再重装一下就好了

  • pip uninstall pyzmq

  • pip install pyzmq

3 Pandas 数据结构

3.1 Series的创建

pd.Series()

  • S大写

  • 传入一个、两个参数

  • 第一个参数就是数据, 也可以通过index = 指定行索引

  • 如果不指定行索引, 会默认添加从0开始的索引

传入的数据可以是以下类型

  • numpy的ndarray

  • python 列表,元组,字典

    • 传入的如果是字典, 字典的key作为索引, Value就是数据

一列Series数据类型必须一致的

  • 如果既有字符串, 又有数字, 会是字符串类型 Object

3.2 Series属性

s.shape # 形状 描述series有几行 返回一个元组
s.values # Series的值 默认ndarray类型
s.index  # Series的索引, 如果手动指定, 就是一个ndarray类型, 如果是自动生成 rangeIndex()

3.3 Series的常用方法

  • head()

  • tail()

  • to_list() # 转换成列表

  • to_frame() #转换成DF

  • describe() # 加载数据之后, 首先可以先head() 再 describe 看数据的分布情况

    • count()

    • std() # 标准差 方差 = ∑(一列数据的每一个值- 均值)²/M 标准差 = 方差开根号 反映了数据的离散程度

    • mean()

    • min()

    • max()

    • 计算了三个分位数( 25% 50% 75%)

      • 50% 中位数

  • 对数据进行修改的方法, 99%都有一个共同的参数 inplace 默认值是False

    • 修改数据的API默认不会再原始的数据上进行修改, 而是会在副本上进行修改, 并且会把这个修改后的副本作为方法的返回值, 返回来

    • 如果inplace 修改为True 就会在原始的数据上进行修改, 此时这个方法没有返回

    • 去重 drop_duplicates

    • 排序 sort_values()

      • 参数 ascending=False 降序排列
  • unique() 返回唯一值的列表

  • s1.value_counts() 相当于分组计数, 统计每个取值出现的次数, 默认会按照取值多少做降序排列

3.4 布尔索引(布尔值列表做数据筛选)

加载数据之后, 要取出年龄大于平均年龄的人名

df['Name'][df['Age']>df['Age'].mean()]
- DataFrame 可以看作是由Series组成的列表, df[列名] 类似于 列表通过下标取值
- df['Name'][由布尔值组成的列表/Series] 这种写法类似于SQL的where条件
需要注意  df['Age']>df['Age'].mean() 长度 要跟 df['Name']长度一致, 否则会报错

3.5 Series的运算

  • Series和一个值进行计算

    • 数值类型 做加减乘除, Series中的每一个元素都跟这个值做加减乘除, 不需要写循环

    • 字符串类型 可以和数值做乘法, 相当于复制, 乘以2 复制一份

  • 两个Series之间进行计算,根据行索引进行对齐

    • 如果两行行索引一样, 就可以在一起计算

    • 如果两行行索引不一样,不能在一起算, 如果一个Series里有的行索引, 另一个Series没有, 返回NaN

  • Series做各种计算

3.6 DataFrame的创建和常用属性

pd.DataFrame()

  • 可以传入字典 {‘列名’:[值1,值2, 值3],‘列名2’:[值1,值2, 值3]}

  • 也可以传入列表套列表,列表套元组

    • data = [[],[], []]

  • 创建df的时候, 可以通过index 指定行索引 columns指定列名

常用属性

  • shape (行数,列数)

  • index 行索引

  • values 值, ndarray(注意 pandas2.0以后, 底层调用的运算库,可以不是numpy了, 可以选择pyarrow)

  • columns 列

3.7 DataFrame的常用方法

df.info()

  • 加载数据之后, 做具体的业务处理之前, 一般固定的套路

    • head() 看数据长什么样

    • info() 字段有哪些, 有没有空值, 每个字段的数据类型

    • describe() 数据的分布 默认会展示数值类型的统计量

      • include = object 显示字符串类型的分布情况

      • count 计数,unique 唯一值的数量, top出现次数最多的字符串是啥 freq 出现次数最多的字符串出现的频率(次数)

df.head()/tail()

df.min()算最小/df.max()算最大/df.mean()取平均/df.count() 计数

3.8 DataFrame的布尔索引取部分值

  • 使用方法和Series是一样的, 只不过在条件前面的对象是一个dataframe

  • 如果要使用多个条件进行筛选,按照下面方法写

df_sci[(df_sci['Age']>df_sci['Age'].mean()) | (df_sci['Occupation']=='Chemist')]

多个条件,同时计算, 每个条件都要用()括起来

多个条件之间,要用位运算的符号 同时满足 & 满足一个就可以 |

& 对应的还有and 运算符 | 对应or 如果是两个Series之间进行计算, 要用位运算 & | 不能用 and or

(df_sci['Age']>df_sci['Age'].mean()) or (df_sci['Occupation']=='Chemist')

报错

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

and or 只能在一个True、False 和 另一个True/False之间进行计算

3.9 DataFrame之间的计算

  • 和Series之间的计算 没有区别, 参见series的计算

4 读取保存Excel和CSV文件

读取文件的API pd.read_XXX XXX→ 文件格式 excel , csv, json,sql

保存文件的API df.to_XXX XXX→ 文件格式 excel , csv, json,sql

to_excel

df.to_excel('test3.xlsx',sheet_name='student',index=False,header=False)
# 第一个参数路径  sheet_name 表格下边工作簿的名字   index=False(默认是True) 不保存行索引  header=False(默认是True) 不保存列名

to_csv

  • 参数基本跟excel一样, 没有sheet_name

  • 特殊的参数 sep 分隔符, 默认是逗号, 可以修改成其它的比如

df.to_csv('test3.csv',index=False,sep='\t')
# '\t'制表符作为分隔符
# 加载数据的时候, 也要指定对应的分隔符
pd.read_csv('test3.csv',sep='\t')
  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值