python-数据分析-pandas

『1.』pandas常见的数据类型

常见的数据类型:
    - 一维: Series
    - 二维: DataFrame
    - 三维: Panel  ....
    - 四维: Panel4D  .....
    - N维: PanelND  ....

『2.』使用pandas创建一维数据类型

import pandas as pd
import numpy as np
import string
# 查看pandas的版本信息
print(pd.__version__)
# 通过列表创建series对象
array=['粉丝','粉条','粉带']
# 如果不指定索引,默认从0开始
s1=pd.Series(data=array)
print(s1)
# 如果不指定索引,默认从0开始
ss1=pd.Series(data=array,index=['a','b','c'])
print(ss1)
# 通过numpy的对象Ndarray创建Series:
n=np.random.randn(5)
s2=pd.Series(data=n)
print(s2)
# 修改元素的数据类型
ss2=s2.astype(np.int)
print(ss2)
# 通过字典创建Series对象
dict={string.ascii_lowercase[i]:i for i in range(5)}
s3=pd.Series(dict)
print(s3)

『3.』series的基本操作

import pandas as pd
import numpy as np

# 创建一个series
array = ["粉条", "粉丝", "粉带"]
s1 = pd.Series(data=array)
print(s1)

# 查看series索引
print(s1.index)
# 修改series索引
s1.index=['a','b','c']
print(s1)
array=['赵','钱','孙']
s2=pd.Series(data=array)
# series纵向拼接
s3=s1.append(s2)
print(s3)
# 删除指定索引对应的元素
s3=s3.drop('c')
print(s3)
# 根据指定的索引查找元素
print(s3['a'])
s3['b']=np.nan
print(s3)
# 切片操作
print(s3[:2])
print(s3[-2:])

『4.』series的简单计算

import numpy as np
import pandas as pd
import string

s1=pd.Series(np.arange(5),index=list(string.ascii_lowercase[:5]))
s2=pd.Series(np.arange(2,8),index=list(string.ascii_lowercase[2:8]))
# 加法
print(s1+s2)
print(s1.add(s2))
# 减法
print(s1-s2)
print(s1.sub(s2))
# 乘法
print(s1 * s2)
print(s1.mul(s2))
# 除法
print(s1 / s2)
print(s1.div(s2))
# 求中位数
print(s1.median())
# 求和
print(s1.sum())
# 求最大数
print(s1.max())
# 求最小数
print(s1.min())

『5.』series中的where方法和字符串的简单操作

s1=pd.Series(np.arange(5),index=list(string.ascii_lowercase[:5]))
# 对象中不大于3的元素赋值为10
print(s1.where(s1[:]>3,10))
# 对象中大于3的元素赋值为10
print(s1.mask(s1[:]>3,10))
import pandas as pd
import numpy as np
series1= pd.Series(['$A:1', '$B:2', '$C:3', np.nan, '$cat:3'])
print(series1)
# 将所有的字母转换为小写字母, 除了缺失值
print(series1.str.lower())
# 将所有的字母转换为大写字母, 除了缺失值
print(series1.str.upper())
# 分离
print(series1.str.split(":"))
# 去掉左右两端的某个字符
print(series1.str.strip('$'))

『6.』创建dateframe数据类型

import pandas as pd
import numpy as np

narr=np.arange(8).reshape(2,4)
# DataFRame对象里面包含两个索引, 行索引index(0轴, axis=0), 列索引columns(1轴, axis=1)
d2=pd.DataFrame(data=narr,index=['A','B'],columns=['views', 'loves', 'comments', 'tranfers'])
print(d2)
# 查看基础属性
print(d2.shape)     # 获取行数和列数
print(d2.dtypes)    # 列数据类型
print(d2.ndim)      # 获取数据的维度
print(d2.index)
print(d2.columns)
print(d2.values)
# 数据整体状况的查询
print(d2.head(1))       # 显示头部的几行, 默认5行
print(d2.tail(1))       # 显示头部的尾行, 默认5行
# 相关信息的预览: 行数, 列数, 列类型, 内存占用
print(d2.info())
# 快速综合用计结果: 计数, 均值, 标准差, 最小值, 1/4位数, 中位数, 3/4位数, 最大值;
print(d2.describe())
# 转置操作
print(d2.T)
#按照指定列进行排序, 默认是升序, 如果需要降序显示,设置ascending=False;
print(d2.sort_values(by='views',ascending=False))
# 切片及查询
print(d2[:1])    # 可以实现切片行,但是不能索引
print(d2['views'])  # 通过标签查询, 获取单列信息
print(d2.views)     # 通过标签查询, 获取单列信息
print(d2[['views', 'comments']])  # 通过标签查询多列信息
# 6). 通过类似索引的方式查询;
#       - iloc(通过位置进行行数据的获取),
#        - loc(通过标签索引行数据)
print(d2)
print(d2.iloc[-1:])
print(d2.loc["A"])
print(d2.loc['A']['views'])
# 更改pandas的值
d2.loc['A']=np.nan
print(d2)

『7.』dateframe数据类型的基本操作

import pandas as pd

df = pd.DataFrame(
    {'province': ['陕西', '陕西', '四川', '四川', '陕西'],
     'city': ['咸阳', '宝鸡', '成都', '成都', '宝鸡'],
     'count1': [1, 2, 3, 4, 5],
     'count2': [1, 2, 33, 4, 5]
     })
# csv文件的写入,index=False 不显示行索引
df.to_csv("01_csv.csv",index=False)
print('csv文件保存成功')
# excel文件的写入
df.to_excel("02_excel.xlsx",sheet_name="省份统计")
print('excel文件保存成功')
# csv文件的读取
df2=pd.read_csv("01_csv.csv")
print(df2)

『8.』pandas的groupby功能

pandas提供了一个灵活高效的groupby功能,
    1). 它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。
    2). 根据一个或多个键(可以是函数、数组或DataFrame列>名)拆分pandas对象。
    3). 计算分组摘要统计,如计数、平均值、标准差,或用户自定义函数。
import pandas as pd

df = pd.DataFrame(
    {'province': ['陕西', '陕西', '四川', '四川', '陕西'],
     'city': ['咸阳', '宝鸡', '成都', '成都', '宝鸡'],
     'count1': [1, 2, 3, 4, 5],
     'count2': [1, 2, 33, 4, 5]
     })
grouped=df["count1"].groupby(df["province"])
print(grouped.describe())
print(grouped.median())
# 根据城市统计分析cpunt1的信息;
grouped = df['count1'].groupby(df['city'])
print(grouped.max())
# 指定多个key值进行分类聚合;
grouped = df['count1'].groupby([df['province'], df['city']])
print(grouped.max())
print(grouped.sum())
print(grouped.count())
#  通过unstack方法, 实现层次化的索引;
print(grouped.max().unstack())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值