python数据分析--pandas

#学习pandas
#为什么学习
#numpy能够帮助处理数值,但是pandas除了处理数值之外,还能处理其他类型的数据
'''
series一维,带标签数组
dataframe二维,series容器
'''
import string
import pandas as pd

#带标签数组--索引
'''
import string
import pandas as pd
import numpy as np
a=pd.Series(np.array([1,2,3,4]))
b=pd.Series([1,2,3,4])
c=pd.Series([1, 2, 3, 4],index=list('abcd'))
t=pd.Series(np.arange(4),index=list(string.ascii_uppercase[:4]))
print(a)
print(b)
print(t)
print(type(t))
print(c)
'''
#通过字典--创建--series,索引的就是字典的键
'''
import string
import pandas as pd
#自制字典
temp_dict = {"name":"xiaohong","age":"30","tel":"10086"}
t = pd.Series(temp_dict)
print(t)
#t-->dtype: object  object译为对象
#a的结果是创建的字典
a={string.ascii_uppercase[i]:i for i in range(5)}
print(a)
b=pd.Series(a)
print(b)
#c是在a的基础上,重新指定索引,如果长度对应的上,则其值,否则就为Nan
c=pd.Series(a,index=list(string.ascii_uppercase[1:6]))
print(c)
#注意:b的类型是int64,c的类型是float64,原因是c中的Nan是无穷小,算是小数
#如何修改dtype?是和numpy的方法一样
'''
#pandas之Series---切片和索引
''''''
#切片--直接传入start end 或者 步长即可
#索引--一个的时候直接传入序号 或者 index,多个的时候传入序号 或者index的列表
'''
import string
import pandas as pd
import numpy as np
t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t)
print(t[1])
print(t[2:10:2])
print(t[[2,3,6]])
print(t[t>4])
print(t["F"])
print(t[["A","F","G"]])
'''
#pandas之Series---索引和值
'''
#series对象本质上由两个数组组成,
#一个数组构成对象的键index,索引。另一个数组构成对象的值values, 键->值
#series具有where方法,但是结果和ndarray不同
import string
import pandas as pd
import numpy as np
t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t.index)
print(t.values)
print(type(t.index))
print(type(t.values))
'''
#pandas之dataframe
'''
import string
import pandas as pd
import  numpy as np

#dataframe对象既有行索引,也有列索引
#行索引:横向索引,index,0轴,axis=0
#列索引:纵向索引,columns,1轴,axis=1
t=pd.DataFrame(np.arange(12).reshape(3,4))
print(t)
a=pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("qwer"))
print(a)
b=pd.DataFrame(np.arange(12).reshape(3,4),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4: ]))
print(b)
#dataframe能够传入字典作为数据吗
#规范的数据
t1 = {"name":["xiaomign","xaiogang"],"age":[20,32],"tel":[10010,10086]}
print(t1)
print(pd.DataFrame(t1))
print(type(pd.DataFrame((t1))))
#不规范的数据
t2 = [{"name":"xiaohong","tel":10010},{"name":"xiaogang","age":32,"tel":10011},{"name":"xiaozneg","age":22}]
print(t2)
print(pd.DataFrame(t2))
print(type(pd.DataFrame((t2))))
'''
#pandas之dataframe的方法
'''
基础属性:
df.shape  行数 列数
df.dtypes   列数据类型
df.ndim    数据维度
df.index    行索引
df.columns    列索引
df.values   对象值,二维ndarray数值

df.head(3) 显示头部几行,默认5行
df.tail(3)  显示末尾几行,默认5行
df.info()  行数、列数、列索引、列非空值个数、列类型、内存占用

df.describe()  计数,均值,标准差,最大值,四分位数,最小值
'''
'''
import string
import pandas as pd
import  numpy as np
t1 = [{"name":"xiaohong","tel":10010},{"name":"xiaogang","age":32,"tel":10011},{"name":"xiaozneg","age":22}]
t2 = pd.DataFrame(t1)
print(t2.index)
print(t2.columns)
print(t2.values)
print(t2.shape)
print(t2.dtypes)
print(t2.ndim)
'''
#pandas之索引
#loc
'''
df.loc  通过标签索引行数据, 标签就是字符串
df.iloc  通过位置获取行数据
'''
'''
import string
import pandas as pd
import  numpy as np


b=pd.DataFrame(np.arange(12).reshape(3,4),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4: ]))
print(b)
print(b.loc["A","W"])
print(b.loc["A",["W","Z"]])
print(type(b.loc["A",["W","Z"]]))
#选择间隔的多行多列
print(b.loc[["A","C"],["W","Z"]])

print(b.loc["A":,["W","Z"]])
#冒号在loc里面是闭合
print(b.loc["A": "C",["W","Z"]])
'''
#pandas--布尔索引
#字符串方法
'''
lower.upper  转换大小写,相当于执行x.lower() 或 x.upper()
replace 用指定字符创替换找到的模式
split 根据分隔符 或 正则表达式对字符串进行拆分
contains 返回表示各字符串是否含有指定模式的布尔类型
'''
#缺失数据的处理
'''
对于Nan的数据,如何处理?
判断数据是否为Nan:pd.isnull(df),pd.notnull(df)

处理方式1:删除Nan所在的行列 dropna(axis=0,how='any',inplace=False)
处理方式2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)

处理为0的数据:t[t==0]=np.nan
当然并不是每次为0的数据都需要处理
计算平均值等情况,nan不参与计算,但是0会
'''




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乐小凡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值