pandas 简单使用

pandas 简单使用

创建Series

import pandas as pd
import numpy as np
# 创建的Series都是1维数据

# 方式1		默认索引
pd.Series([4, 7, -5, 3])  

# 方式2		指定索引		(数组,index=索引)
a = np.arange(1, 6)
pd.Series(a, index=['一', '二', '三', '四', '五'])

# 方式3		创建n个某固定数的数组		(固定数,生成数量)
pd.Series(0.2,index=range(10))

# 方式4		定长有序字典		(索引,值)
dic1 = {'app': 5, 'awqsdw': 3, 'sdaw2': 10}
pd.Series(dic1)

访问Series数据

s2 = pd.Series([4.0, 6.5, -0.5, 4.2], index=['d', 'b', 'a', 'c'])
# 索引、位置取值
print(s2['a'])
print(s2[0])
# 切片取值方式
print(s2['d':'a'])
# 根据索引取值
# 掩码方法:取['a', 'b', 'c'] 内部索引对应的值,若存在,即为True(取),否则为False(舍)
print(s2[['a', 'b', 'c']])

# 查看内部值(原数据)
print(s2.values)
# 查看索引 (起点,终点,步长)
print(s2.index)
print(s2.shape)
# 维度
print(s2.ndim)

创建表结构pd.DataFrame

# 方法1 数组指定行列,定义行列标签     (index行,columns列)
a = pd.DataFrame(np.arange(12).reshape((3, 4)), index=['a', '牛', 3], columns=[2.2, 33, 44, 5])

# 方法2 字典套列表(长度必须一致)
data = {'A1': [1, 2, 3, ], 'A2': [4, 5, 6]}
# index--行标签,字典键--列标签
b = pd.DataFrame(data, index=['1号', '2号', '3号'])

# 方法3 字典套列表(长度无需一致) 多余空出自动用NaN填充
data = {'S2': pd.Series([1, 2, 3, 4], index=['1号', '2号', '3号', '4号']),
        'S1': pd.Series([1, 2, 3], index=['1号', '2号', '3号'])}
# 字典中:index--行标签,字典键--列标签
c = pd.DataFrame(data)

表结构pd.DataFrame属性

使用上面pd.DataFrame方法3举例
# 查看行全部标签
print(c.index)
# 查看列全部标签
print(c.columns)
# 查看列标签的数据类型
print(c.dtypes)
# 按行取(指定数量)
print(c.head(1))
# 按列取(指定数量)
print(c.tail(2))

表结构pd.DataFrame增删改查

# 方法3 字典套列表(长度无需一致) 多余空出自动用NaN填充
data = {'S4': pd.Series([1, 2, 3, 4], index=['1号', '2号', '3号', '4号']),
        'S3': pd.Series([1, 2, 3, 4], index=['1号', '2号', '3号', '4号']),
        'S2': pd.Series([1, 2, 3, 4], index=['1号', '2号', '3号', '4号']),
        'S1': pd.Series([1, 2, 3], index=['1号', '2号', '3号'])}
# 字典中:index--行标签,字典键--列标签
c = pd.DataFrame(data)
print(c)
print('*' * 30)
# 列的访问
print(c['S1'])
print(c[['S1', 'S2']])  # 使用掩码的方式过滤和获取数据 (中括号套中括号)
print(c['1号':'4号'])  # 切片操作--必须切行
print(c[c.columns[0:3]])  # 获取全部列标签,将其切片,在使用掩码方式获取数据
# 列的增加`  需指定index行标签
c['S5'] = pd.Series([1, 2, 3, 4], index=['1号', '2号', '3号', '4号'])
print(c)
# 列的删除
del c['S5']
c.pop('S4')
#  axis=0时删除行,=1时删除列  注意:不修改原数据
df2 = c.drop(['S1', 'S2'], axis=1)
df2 = df2.drop(['1号', '2号'], axis=0)
print(df2)
# inplace=True 修改原数据
c.drop(['S1', 'S2'], axis=1, inplace=True)
c.drop(['1号', '2号'], axis=0, inplace=True)
print(c)

# 行的访问
print(c)
print('*'*30)
print(c.loc['1号'])
# loc标签索引
print(c.loc['1号':'3号'])
# iloc位置索引
print(c.iloc[0:3])

# 修改数据  必须先列后行
c['S1'][0] = 18
print(c)

pd读写

# 读文件 编码方式为 gbk
csv_data = pd.read_csv('./cs.csv', encoding='utf_8_sig',
                       # header=None 使用默认行索引,
                       header=None,
                       # 自定义names=['第一列','第二列等']
                       names=['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'],
                       # 将某列,指定成索引列
                       index_col=['一'],
                       # 需要的列,其他都不要了,注意:如过使用索引列,需要加上索引列
                       usecols=['一', '二', '三']
                       )
# 若读取 .xlsx 文件 pd.read_excel
# 并且需要安装:pip install openpyxl

# 指定sep使用什么进行分割 sep=','
print(csv_data)
# 查看当前列,的离散数据出现的各个类别出现的频率次数
print(csv_data['一'].value_counts())

# 保存参数:
# 保存--也就是写入
# | filepath_or_buffer | 文件路径                                          |
# | ------------------ | ------------------------------------------------- |
# | sep                | 列之间的分隔符。默认为','                         |
# | na_rep             | 写入文件时dataFrame中缺失值的内容。默认空字符串。 |
# | columns            | 定义需要写入文件的列。                            |
# | header             | 是否需要写入表头。默认为True。                    |
# | index              | 会否需要写入行索引。默认为True。                  |
# | encoding           | 编码。                                            |
# mode='a' 追加写入 默认是"w"重新写
csv_data.to_csv('./gun2.csv', encoding='utf_8_sig')

其他操作记录

# skiprows=0 跳过第几行
csv_data1 = pd.read_csv('./1.csv', skiprows=0, )

# 删除存在缺失值的整行
csv_data1 = csv_data1.dropna()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值