python数据分析

发布时间:2024-11-18 20:19

数据分析:Python的Pandas库数据处理 #生活知识# #编程教程#

import scrapy

import xlwt, lxml

import re, json

import matplotlib.pyplot as plt

import numpy as np

import pylab

from scipy import linalg

from pandas import Series,DataFrame

'''

#http://pandas.pydata.org/

#pandas=pannel data + data analysis

基本功能

开发pandas时提出的需求

具备按轴自动或显示数据对齐功能的数据结构

集成时间序列功能

既能处理时间序列数据也能处理非时间序列数据的数据结构

数学运算和约简(比如对某个轴求和)可以根据不同的元数据(轴编号)执行

灵活处理缺失数据

合并及其他出现在常见数据库(例如基于SQL)中的关系型运算

数据结构 Series DataFrame Index

Series 是一种类似于一维数组的对象,他由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成

Series的字符串表现形式为:索引在左边,直在右边

创建、读写、运算

'''

'''

#用数组生成Series 索引默认0-。。。

obj=Series([4,7,-5,3])

print(obj)

print(obj.values)#返回np.ndarray

print(obj.index)

#指定Series的index

obj2=Series([4,7,-5,3],index=['d','b','a','c'])

print(obj2)

print(obj2.index)

print(obj2['a'])

print(obj2[obj2>0])

print('e' in obj2 )#判断索引是否存在

#使用字典生成Series

sdata={'a':400,'b':500,'d':700,'s':900}

obj3=Series(sdata)

print(obj3)

#使用字典生成Series,并额外指定index,不匹配部分为NaN

alpha=['a','b','c','d']

obj4=Series(sdata,index=alpha)

print(obj4)

#Series相加,相同索引部分相加,不同置NaN

print(obj3+obj4)

#指定Series及其索引的名字

obj4.name='account'

obj.index.name='alpha'

#替换index

obj.index=['Bob','Steve','Jeff','Ryan']

print(obj)

'''

'''

DataFrame 是一个表格型的数据结构,它有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

DataFrame既有行索引也有列索引,它可以被看作由Series组成的字典(共用同一个索引)

'''

'''

#用字典生成DataFrame,key为列的名字

data = {'state':['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year':[2000, 2001, 2002, 2001, 2002],'pop':[1.5, 1.7, 3.6, 2.4, 2.9]}

print(DataFrame(data))

#DataFrame(data,index,column)#指定列的顺序以及索引【在列中指定不存在的列,默认数据用NaN】

df2=DataFrame(data,columns=['year','state','pop'],index=['one','two','three','four','five'])

print(df2)

print(df2['state'])

print(df2.year)

print(df2.ix['three'])#取某一行(索引)的列属性值

df2['debt']=16.5#添加或更新一整列

df2.debt=np.arange(5)#用numpy数组修改元素

print(df2)

#用Series指定要修改的索引及其对应的值,没有指定的默认数据用NaN

val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])

df2.debt=val

print(df2)

#赋值给新列

df2['eastern']=(df2.state=='Ohio')#若state等于Ohio为True

print(df2)

#DataFrame转置

pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2003:3.6}}

df3=DataFrame(pop)

print(df3)

# print(df3.T)

#指定索引顺序,以及使用切片初始化数据

# print(DataFrame(pop,index=[2001,2002,2003]))

pdata={'Ohio':df3['Ohio'][:-1],'Nevada':df3.Nevada[:2]}

print(DataFrame(pdata))

#指定索引和列的名字

df3.index.name='year'

df3.columns.name='state'

print(df3)

print(df3.values)

'''

'''pandas 中主要的index对象

index 最广泛的index对象,将轴标签为一个由python对象组成的numpy数组

Int64Index 针对整数的特殊index

MiltiIndex “层次化”索引对象,表示单个轴上的多层索引,可以看做由原数组组成的数组

DatetimeIndex 存储纳秒时间戳

PeriodIndex 针对Period数据的特殊index

drop 删除传入的值,并得到新的索引

insert 将元素插入到索引i处,并得到新的index

is_monotonic 当各元素均大于等于前一个元素时返回True

is_unique 当index没有重复值时,返回True

unique 计算index中唯一值数组

基本功能 重新索引

创建一个适应新索引的对象,该Series的reindex将会根据新索引进行重排,如果某个索引值当前不存在,就引入缺失值

对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理。method选项即可达到此目的

reindex(index,method,fill_value,limit,level,copy)

limit 前向或后向填充时的最大填充量

level 在MultiIndex的指定级别上匹配简单索引,否则选取其子集

copy 默认为True,无论如何都复制。如果为False,则新旧相等就不复制

'''

'''

#重新指定索引及顺序

obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])

print(obj)

obj2=obj.reindex(['a','b','d','c','e'],fill_value=0)#重新索引,若索引不存在则指定默认值(fill_value)[算不算处理缺失值呢???]

print(obj2)

#重新指定索引并指定元素填充方法

obj3=Series(['blue','purple','yellow'],index=np.arange(0,5,2))

print(obj3)

print(obj3.reindex(range(6),method='ffill'))#method=(ffill), backfill (bfill) or nearest

#对DataFrame重新索引

df=DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['Ohio','Texas','California'])

print(df)

df2=df.reindex(['a','b','c','d'])

print(df2)

#重新指定column(列)index(行)

states=['Texas','Utah','California']

# print(df.reindex(columns=states))

#对DataFrame重新指定索引并指定元素填充方法

df3=df.reindex(index=['a','b','c','d'],columns=states)#????method='ffill',加入报错: index must be monotonic increasing or decreasing

print(df3)

'''

'''丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象'''

'''

#Series根据索引删除元素

obj = Series(np.arange(5), index = ['a', 'b', 'c', 'd', 'e'])

new_obj = obj.drop('c')

print(new_obj)

print(obj.drop(['c','d']))

#DataFrame删除元素,可指定索引或列

df=DataFrame(np.arange(16).reshape(4,4),index=np.arange(4),columns=['one','two','three','four'])

print(df)

print(df.drop(1))

print(df.drop('two',axis=1))#删除指定列

#df.dropna()删除NaN..

'''

'''

#索引、选取和过滤

#为了在DataFrame的行上进行标签索引,引入了专门的索引字段ix

#DataFrame的索引

df=DataFrame(np.arange(16).reshape((4,4)),index=['Ohio','Colorado','Utah','NewYork'],columns=['one','two','three','four'])

print(df)

print(df['two'])#打印列

print(df[:2])#切片打印

print(df.ix['Colorado','two'])#打印指定索引和列【此为指定的某列元素】

print(df.ix['Colorado',['two','three']])#)#打印指定索引和列【此为指定的某行的某多列元素】

print(df.ix[['Colorado','Utah'],[3,0,1]])#)#打印指定索引和列【此为指定的某多行的某多列(按默认数字索引0,1,2...)元素】

print(df.ix[2])#打印第二行(从0开始)

print(df.ix[:'Utah','two'])#从开始到Utah的第二列

#根据条件选择

print(df[df.three>5])#满足条件的所有行

print(df<5)#打印bool类型【满足条件的元素为True】

df[df<5]=0

print(df)

'''

'''

算术运算和数据对齐

对不同的索引对象进行算术运算

自动数据对齐在不重叠的索引处引入了NA值,缺失值会在算术运算过程中

对于DataFrame,对齐操作会同时发生在行和列上

fill_value参数

DataFrame和Series之间的运算

'''

s1=Series([7.3,-2.5,3.4,1.5],index=['a','c','d','e'])

s2=Series([-2.1,3.6,-1.5,4,3.1],index=['a','c','e','f','g'])

print(s1+s2)

df1=DataFrame(np.arange(9).reshape((3,3)),columns=list('bcd'),index=['Ohio','Texas','Colorado'])

df2=DataFrame(np.arange(12).reshape((4,3)),columns=list('bde'),index=['Ohio','Texas','Utah','Oregon'])

print(df2+df1)

df3=DataFrame(np.arange(12).reshape((3,4)),columns=list('abcd'))

df4=DataFrame(np.arange(20).reshape((4,5)),columns=list('abcde'))

print(df3.add(df4,fill_value=0))

print(df3.reindex(columns=df2.columns,fill_value=0))

arr=np.arange(12).reshape((3,4))

print(arr)

print(arr[0])

print(arr-arr[0])

df5=DataFrame(np.arange(12).reshape((4,3)),columns=list('bde'),index=['Utah', 'Ohio', 'Texas', 'Oregon'])

series=df5.ix[0]

print(df5)

print(series)

print(df5-series)

series2=Series(range(3),index=list('bef'))

print(series2)

print(df5+series2)

series3=df5.d

print(df5.d)

print(df5.sub(series3,axis=0))

网址:python数据分析 https://www.yuejiaxmz.com/news/view/124658

相关内容

【Python】Python连接Hadoop数据中遇到的各种坑(汇总)
巨细!一文告诉你数据分析不得不知的秘密!
Python爬虫山东济南景点数据可视化和景点推荐系统 开题报告
大数据清洗随手记(一)
【数据分析】15组Excel函数,解决数据分析中80%的难题!
python爬取B站千万级数据,发现了这些热门UP主的秘密!
python
三大生活技能数据分析!
Python制作生活工具
Python机器学习数据挖掘工具sklearn安装和使用

随便看看