您的当前位置:首页正文

python资料

2020-01-19 来源:汇智旅游网


python资料

Python对csv的处理:

#edcoding:utf-8

import pandas as pd

import csv

df=pd.read_csv('23.csv')

print df.week #输出week这一列的数据

print df['week'] #输出week这一列的数据

print df.ix[1] #输出第二行数据(下标是从0开始的)

print df.iloc[:,1:4] #输出第二到第四列的数据但是只可以通过序列取,不能通过列名

print df.ix[:,['LEASETIME','SHEDID']] #通过列名取出数据

print df.ix[:,[1,5]] #取出第二行和第六行数据(下标是从0开始的)

print df.ix[5,1] #输出第六行第二列的数据(下标是从0开始的)

print df.head(10) #取出前十行数据

print df.tail(10) #取出后十行数据(从后往前数)

print df[df.week==0] #将week这列等于0的全部取出来

print df[(df.week==0)&(df.SHEDID==8)]

#将week这一列等于0且SHEDID这一列等于8的数据全部取出(|这个符号表示或)

list=['3','4']

print df[df.week.isin(list)] #输出week这一列满足是‘3’或‘4’的所有数

print '===================='

print df.sort_values(by='week',ascending=True) #以week这一列从小到大排序

df['a']=1

print df #添加a这一列的值全部为1,也可以让他等于一个列表,但列表的长度必须与行数相等

del df['a']

print df #删除a这一列

print

'==============================================================='

#groupby()这个函数是分组(但是不能单独使用),count()这个方法是统计次数,

print df.groupby(df.week).count() #以week这一列分组后,统计相同的次数是多少

#分组后可以是用一下方法count()、sum()(求和)、mean()(求平均数)、max()(求最大值)、min()(求最小值)

Python中numpy:

#coding:utf-8

import numpy as np

import array

import pandas as pd

import numpy as np

#列表

n=np.array([1,2,3,4])

print n

list1=[1,2,3,'a']

print list1

#数组

n= np.array([1,2,3,'a'])

print n

#自定义两行两列数组

b=np.array([[1,2,3],[4,5,6]])

print b

print b.shape

#自定义两行两列数组

#自定义一个3行2列数组

m1=np.array([[1,2],[3,4],[4,5]])

print m1,m1.shape

#访问数组内元素

print m1[0,0]

print m1[1,1]

a=np.arange(5)

print a

print a.dtype

print a.dtype.itemsize

print np.int8(8.0)

a=1+0.1j

b=0.2

print a+b

a=np.arange(7,dtype='D')

print a

#查看数据类型

print np.dtype(float)

print np.dtype('f')

print np.dtype('f2');print np.dtype('f4');print np.dtype('f8')

print \"AAAAAAAAAAAAA\"

t=np.dtype(float) # t=np.dtype('float')

print t.char,t

#dtype类型属性type

print t.type

#dtype类型属性str 保存一个表示数据类型的字符串

print t.str

print \"BBBBBBBBBBBBBB\"

#一维数组的切片与索引

a=np.arange(10)

print a[3:5] #左闭右开

print a[1:7:2] ##左闭右开,间隔2

print a[4::-1] # 输出[4 3 2 1 0]

print \"CCCCCCCCCCCCCCCC\"

#处理数组形状

print a.reshape(2,5) #将1行10列数组转换成2行5列数组

b=np.arange(24).reshape(2,3,4)

print b

print b.ravel() #将多为数组降为1维数组,默认以行为准,参数-1以列为准

print b.flatten(-1) #拉直操作,默认以行为准,参数-1以列为准

print b.ravel().reshape(4,6)

print b.ravel().reshape(4,6).transpose() #转秩操作

print \"DDDDDDDDDDDDDDDDDDD\"

#reshape函数返回一个新数组,但原数组本身.不变;

# resize在返回一个新数组的同时也改变原数组本身。

print \"b=\

print \"b.reshape=\

print \"b=\

b.resize(2,12)

print \"b=\

b.shape=(2,3,2,2) #用元组的形式指定数组形状

print b

print \"EEEEEEEEEEEEEEEEEEEEEEEEE\"

#堆叠数组

a=np.arange(9).reshape(3,3)

print a

b=a**2

print a**2

c=np.hstack((a,b,a)) #水平叠加

d=np.vstack((a,b))#垂直叠加

print c,\"Hello\

print np.concatenate((a,b),axis=1) #concatenate功能数组叠加,axis=0默认水平叠加,axis=1垂直叠加

d=np.dstack((a,b,a)) #深度叠加,沿着第三个坐标轴(纵向)的方向叠加一摞数组。

print d

aa=np.arange(2)

bb=aa*2

print aa,bb

#column_stack列式叠加,以列方式对一维数组进行堆叠,多维数组和hstack类似

print np.column_stack((aa,bb)) #以列方式对一维数组进行堆叠

print np.column_stack((a,b)) #多维数组和hstack类似

print np.hstack((a,b))==np.column_stack((a,b))

#row_stack行式叠加,以行方式对一维数组进行堆叠,多维数组和vstack类似

print np.row_stack((aa,bb))

print np.row_stack((a,b))

print np.row_stack((a,b))==np.vstack((a,b))

print \"FFFFFFFFFFFFFFFFFFF\"

#数组拆分

a=np.arange(9).reshape(3,3)

print a

print type(np.vsplit(a,3)),np.vsplit(a,3) #纵向切分

print np.hsplit(a,3)#横向切分

print \"深向切分\"

print \"切分前\"

a=np.arange(18).reshape(2,3,3)

print a

print \"切分后\"

print np.dsplit(a,3)

print \"GGGGGGGGGGGGGGGG\"

print\"数组的属性,不需要加()\"

print a

print a.ndim #数组的维度

print a.shape#数组的每一维度的大小

print a.dtype#数组中元素的数据类型,numpy要求数组元素类型一致

print a.size #数组中元素个数

print a.itemsize #返回数组中各个元素所占用的字节数

print a.itemsize*a.size #返回数组占用空间大小(字节为单位)

b=np.arange(5)

print b

print a.T #转秩,与transpose()函数功能相同

print b.ndim

b=np.array([1,2+2j]) #复数用j表示,定义一个数组,包含两个元素

print b.real #获取数组的实部

print b.imag #获取数组的虚部

print b.dtype #复数数据类型自动变成复数类型

b=np.arange(4).reshape(2,2)

f=b.flat

print f[[1,3,2]] #取列表中的某几个元素

for i in f: #对列表做循环

print i

b.flat=7 #对数组整体赋值

print b

b.flat[2]=3

print b #对数组某个元素赋值

b.flat[[2,3]]=2

print b

print \"GGGGGGGGGGGGGGGGGGGGGGGGGGG\"

print \"数组的转换,tolist()方法\"

a=np.array([1+1j,0.3+0.8j])

print a

print a.dtype

b=a.tolist()

print b

print type(b) #此时b已经不是numpy数组,不能再具有dtype属性,查看类型

a=11

print type(a) #a.dtype

b=np.array([1+1j,0.3+0.8j])

c=b.astype(float) #将数组元素转换成指定类型

print c,b #转换完成虚部被舍弃

print \"HHHHHHHHHHHHHHHHHHHHHHH\"

print \"创建数组的视图\"

#acopy=lena.copy()

#print acopy

Python中pandas:#coding=utf-8

import pandas as pd

import numpy as np

#Series

obj=pd.Series([1,2,3,4])

print obj

obj=pd.Series([1,2],index=['a','b'])

print obj

data=pd.Series([0,1,2,3],index=[1,2,3,4])

print data

print data[data>1]

print data*3

print data[3]

print pd.notnull('a')

#DataFrame

data={'state':['beijin','shanghai','hangzhou',],'a':['a','b','c']}

print pd.DataFrame(data)

print pd.DataFrame(data,columns=['state','a'],index=[1,2,3])

a=pd.DataFrame(data)

print a.ix[1]

print a.T

print a[2:4]

a=pd.Series(np.arange(4,8),index=['a','b','c','d'])

print a

print 'aaaaaa'

print a[:4]

print 'aaaaaa'

print a[:5]

df1=pd.DataFrame(np.arange(1,13).reshape(3,4),columns=['a','b','c','d'],index=['A','B','C'])

print df1

df2=pd.DataFrame(np.arange(1,10).reshape(3,3),columns=['a','b','e'])

print df2

print df1.add(df2,fill_value=0)

Python中matplotlib:

线型图:

import matplotlib.pyplot as plt

x=[1,3,5]

y=[4,6,8]

x1=[3,4,6]

y1=[5,4,9]

plt.plot(x, y, label='First Line')

plt.plot(x1, y1, label='Second Line')

plt.xlabel('Plot Number')

plt.ylabel('Important var')

plt.title('Interesting Graph\\nCheck it out')

plt.legend()

plt.show()

在这里,我们绘制了我们已经看到的东西,但这次我们添加另一个参数label。 这允许我们为线条指定名称,我们以后可以在图例中显示它。

使用plt.xlabel和plt.ylabel,我们可以为这些相应的轴创建标签。

接下来,我们可以使用plt.title创建图的标题,然后我们可以使用plt.legend()生成默认图例

条形图:

import matplotlib.pyplot as plt

plt.bar([1,3,5,7,9],[5,2,7,8,2], label=\"Example one\")

plt.bar([2,4,6,8,10],[8,6,2,5,6], label=\"Example two\

plt.legend()

plt.xlabel('bar number')

plt.ylabel('bar height')

plt.title('Epic Graph\\nAnother Line! Whoa')

plt.show()

plt.bar为我们创建条形图。 如果你没有明确选择一种颜色,那么虽然做了多个图,所有的条看起来会一样。

这让我们有机会使用一个新的 Matplotlib 自定义选项。 你可以在任何类型的绘图中使用颜色,例如g为绿色,

b为蓝色,r为红色,y为黄色,k为黑色,w为白色,买等等。 你还可以使用十六进制颜色代码,如#191970。

直方图:

接下来,我们会讲解直方图。 直方图非常像条形图,倾向于通过将区段组合在一起来显示分布。 这个例子可能是年龄的分组,或测试的分数。

我们并不是显示每一组的年龄,而是按照 20 ~ 25,25 ~ 30… 等等来显示年龄。 这里有一个例子:

import matplotlib.pyplot as plt

population_ages =

[22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48]

bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130]

plt.hist(population_ages, bins, histtype='bar', rwidth=0.8)

plt.xlabel('x')

plt.ylabel('y')

plt.title('Interesting Graph\\nCheck it out')

plt.legend()

plt.show()

对于plt.hist,你首先需要放入所有的值,然后指定放入哪个桶或容器。 在我们的例子中,我们绘制了一堆年龄,并希望以 10 年的增量来显示它们。

我们将条形的宽度rwidth设为 0.8,但是如果你想让条形变宽,或者变窄,你可以选择其他的宽度。

散点图

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]

y = [5,2,4,2,1,4,5,2]

plt.scatter(x,y, label='skitscat', color='k', s=25, marker=\"o\")

plt.xlabel('x')

plt.ylabel('y')

plt.title('Interesting Graph\\nCheck it out')

plt.legend()

plt.show()

plt.scatter不仅允许我们绘制x和y,而且还可以让我们决定所使用的标记颜色color,大小s和类型marker。 有一堆标记选项,请参阅 Matplotlib 标记文档中的所有选项。

堆叠图:

在这篇 Matplotlib 数据可视化教程中,我们要介绍如何创建堆叠图。 堆叠图用于显示『部分对整体』随时间的关系。 堆叠图基本上类似于饼图,只是随时间而变化。

让我们考虑一个情况,我们一天有 24 小时,我们想看看我们如何花费时间。 我们将我们的活动分为:睡觉,吃饭,工作和玩耍。

我们假设我们要在 5 天的时间内跟踪它,因此我们的初始数据将如下所

import matplotlib.pyplot as plt

days = [1,2,3,4,5]

sleeping = [7,8,6,11,7]

eating = [2,3,4,3,2]

working = [7,8,7,2,2]

playing = [8,5,7,8,13]

plt.plot([],[],color='m', label='Sleeping', linewidth=5)

plt.plot([],[],color='c', label='Eating', linewidth=5)

plt.plot([],[],color='r', label='Working', linewidth=5)

plt.plot([],[],color='k', label='Playing', linewidth=5)

plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k'])

plt.xlabel('x')

plt.ylabel('y')

plt.title('Interesting Graph\\nCheck it out')

plt.legend()

plt.show()

我们在这里做的是画一些空行,给予它们符合我们的堆叠图的相同颜色,和正确标签。 我们还使它们线宽为 5,使线条在图例中显得较宽。 现在,我们可以很容易地看到,

我们如何花费我们的时间。

饼状图:

饼图很像堆叠图,只是它们位于某个时间点。 通常,饼图用于显示部分对于整体的情况,通常以%为单位。 幸运的是,Matplotlib 会处理切片大小以及一切事情,我们只需

要提供数值。

import matplotlib.pyplot as plt

slices = [7,2,2,13]

activities = ['sleeping','eating','working','playing']

cols = ['c','m','r','b']

plt.pie(slices,

labels=activities,

colors=cols,

startangle=90,

shadow= True,

explode=(0,0.1,0,0),

autopct='%1.1f%%')

plt.title('Interesting Graph\\nCheck it out')

plt.show()

在plt.pie中,我们需要指定『切片』,这是每个部分的相对大小。 然后,我们指定相应切片的颜色列表。 接下来,我们可以选择指定图形的『起始角度』。 这使你可以在任

何地方开始绘图。 在我们的例子中,我们为饼图选择了 90 度角,这意味着第一个部分是一个竖直线条。 接下来,我们可以选择给绘图添加一个字符大小的阴影,然后我们

甚至可以使用explode拉出一个切片。

我们总共有四个切片,所以对于explode,如果我们不想拉出任何切片,我们传入0,0,0,0。 如果我们想要拉出第一个切片,我们传入0.1,0,0,0。最后,我们使用autopct,选择将

百分比放置到图表上面。

因篇幅问题不能全部显示,请点此查看更多更全内容