Python数据分析笔记_第7天(pandas)

pandas的常用数据类型

  • 一维:Series,带标签数组
  • 二维:DataFrame,Series容器

Series类型

创建Series
  • 方法一:
    pd.Series(li,index=)
    通过列表/可迭代对象创建,标签可以自定义,长度与列表相同;默认标签为索引0~∞。
import pandas as pd

t = pd.Series([1, 2, 3, 4, 5, 6, 7], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
print(type(t))
print(t)
  • 方法二:
    pd.Series(dic)
    通过字典创建,键对应标签
d = {'name': 'zhangsan', 'age': 23, 'job': 'data_analyse'}
t_ = pd.Series(d)
print(t_)
切片和索引
  1. Series.[‘标签’],返回单个值
  2. Series.[[‘标签1’,‘标签2’]],返回’标签1’、'标签2’与其对应的值
  3. Series[索引],返回索引位置单个值
  4. Series[[索引1,索引2]],返回索引位置对应的标签与值
  5. Series[Series>10],返回满足调价的标签与对应值
  6. Series.index,索引类型,是可迭代对象
  7. Series.values,ndarray类型
print(t_['name'])
print(t_[['name', 'job']])
print(t_[1])
print(t_[:2])  # 取前两行数据
print(t_[[0, 2]])  # 取第一第三行数据
print((t[t>3]))

DataFrame类型

pandas读取外部数据

在这里插入图片描述

创建DataFrame
import pandas as pd
import numpy as np

# 创建一个dataframe
d = pd.DataFrame(np.arange(12).reshape(3, 4))
print(d)
d_ = pd.DataFrame(np.arange(12).reshape(3, 4), index=list('abc'), columns=list('WXYZ'))
print(d_)

# 字典创建DataFrame
dic = {'name': ['zhangsan', 'lisi', 'wangwu'], 'age': [18, 32, 25], 'city': ['shanghai', 'beijin', 'tianjin']}
d1 = pd.DataFrame(dic)
print(d1)

# 列表创建DataFrame
li = [{'name': 'zhangsan', 'age': 18, 'city': 'shanghai'}, {'name': 'lisi', 'age': 32},
      {'name': 'wangwu', 'city': 'tianjin'}]
d2 = pd.DataFrame(li)
print(d2)  # 缺失的数据用nan填充
print('*' * 40)
属性和方法
# DataFrame 属性
print(d2.index)  # 行索引
print(d2.columns)  # 列索引
print(d2.values)  # 元素值,ndarry类型二维数组(每行记录以列表形式存放在列表中)
print(d2.shape)  # 返回(行,列)
print(d2.dtypes)  # 与列索引一一对应,返回每列的元素类型
print(d2.ndim)  # 返回DataFrame的维度

# DataFrame的方法
print(d2.head(1))  # 返回第一行数据,默认展示前五行
print(d2.tail(1))  # 返回最后一行,默认展示后五行
print(d2.info())  # 显示DataFrame相关信息(行数、列数、列索引、列非空个数、列类型、内存占用)
print(d2.describe())  # 对数值字段返回综合统计结果(计数,均值,标准差,最小值,四分位数,最大值)

e.g 读取文件数据,并排序

import pandas as pd

text = pd.read_csv('./dogNames2.csv')
print(text.head())
print(text.info())  # 展示文件数据描述信息

# 按计数列排序
text = text.sort_values(by='Count_AnimalName', ascending=False)  # 按指定列对数据进行排序,默认升序ascending=True
print(text)
b = text[(text['Row_Labels'].str.len() > 4) & (text['Count_AnimalName'] > 50)]  # .str.len(),对各个元素做字符串求长度的操作
print(b)
索引
import pandas as pd
import numpy as np
import string

# string.ascii_uppercase,对大写字母进行遍历
d = pd.DataFrame(np.arange(12).reshape(3, 4), index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
print(d)

# 方法一
print(d[:2])  # 数字取行
print(d[['W', 'Y']])  # 字符串取列
print(d[:2][['W', 'Y']])
print(d[['W', 'Y']][:2])  # 行列无先后顺序要求

# 方法二
# 标签取数,loc
n1 = d.loc['A', 'Z']  # 取点
print(n1)
print(type(n1))  # numpy.int32类型数据
n2 = d.loc['C']  # 取行
print(n2)
print(type(n2))  # pandas.core.series.Series类型
n3 = d.loc[:, 'Y']  # 取列,行处必须有切片也可以是:
print(n3)
print(type(n3))  # pandas.core.series.Series类型
n4 = d.loc['A':'C', ['W', 'Z']]  # 用标签法,取连续的索引头尾都包,即A-C取三行
print(n4)


# 位置取数,iloc
i1 = d.iloc[1]
print(i1)
i2 = d.iloc[:, [0, 2]]
print(i2)
i3 = d.iloc[:2, 1:3]  # 位置索引包头不包尾
print(i3)
i4 = d.iloc[[0, 2], [0, 2, 3]]
print(i4)
print('*' * 40)

# 方法三
# 布尔索引
b = d[(4 < d['Y']) & (d['Y'] < 10)]  # DataFrame中不支持直接写4<d['Y']<10的格式
print(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值