欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据分析第三天

程序员文章站 2022-05-20 10:53:38
...

numpy十分钟
Axis:纬度 0按列 1 按行
Corrcoef:相关性
Copy:拷贝 相当于深拷贝
sort:排序
A = np.transpose(b)
A.T 矩阵转至
B.ravel()
Concatebate():数据拼接

Pandas
import jieba
import pandas as pd
#创建一个默认索引从0开始的Series
s = pd.Series([1,2,3,4,5,6])
#自定义索引
s = pd.Series([1,2,3,4,5,6],index=[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’])
s[‘a’:‘d’]#切片包含前后
#使用字典创建一个DataFrame,键自动变为索引,一个key默认对应一列数据
s = pd.DataFrame({‘math’:[1,2,3,4,5],‘physic’:[5,6,7,8,9,]})
#读取头两行
s.head(2)
#读取结尾数据
s.tail(2)

#生成从20180101开始的时间序列,默认增加单位的是天
#peperiods=10天  freq:D天 返回值为DatetiemIndex,作为使用
datas = pd.date_range('20180101',periods=10)
#创建使用时间索引的Series
date = pd.Series(range(10),index=datas)
#取出从2018-01-01到2018-01-06的行数据
date['2018-01-01':'2018-01-06']

#读取文件
df_imdb = pd.read_csv('E:\dataanalysis\day03\IMDB.csv')
#查看基本类型
df_imdb.info()
#选出一列
df_imdb.Title()
#获取做高票房
df_imdb['Revenue (Millions)'].max()
df_imdb['Revenue (Millions)'].sum()
df_imdb['Revenue (Millions)'].idxmax()#返回最大值索引
#娶50行
df_imdb[50:51]['Director']
#d第一个纬度是行,第二个是列,取50-56包含前后
df_imdb.loc[50:56,['Director','Year']]
#取1-10行,2-3列都不包含后者
df_imdb.iloc[1:10,2:3]
#统计导演列中不同导演出现的次数
df_imdb['Director'].value_counts()
#讲票房大于某一只的取出来
df_imdb[df_imdb['Revenue (Millions)'] > 500]

df_imdb[df_imdb['Revenue (Millions)'] > 500].loc[:,['Title','Director']]

#讲电影风格描述中含有指定字符的找出来,str讲待处理的转化为字符串
# df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')].loc[:,['Title']]
df_imdb[df_imdb['Genre'].str.contains('Action')].loc[:,['Title']]
df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')].loc[:,['Revenue (Millions)']].loc[:,['Title']]

d = df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')]
d[d['Revenue (Millions)'] > 500].loc[:,['Title','Director']]

#票数前10
s = df_imdb['Votes'].sort_values(ascending=False)
s.head(10)
#将缺失的数据(NaN)填充为0,也可以根据项目需求指定其他数据

df_score = pd.read_excel('E:\dataanalysis\day03\score.xlsx')
#在DataForm增加一列avg,计算当前Df中每一行的额平均值
#前后赋值数据的行数要对应,axis=1按行计算平均值,0按列计算平均值
df_score['avg'] = df_score.mean(axis=1)
#增加一列计算总分
df_score['sum'] = df_score.sum(axis=1)
#拷贝文件
d_copy = df_score.copy()
#df_score.describe()把每行列都做一个运算
#按性别分组
df_score.loc[:,[u'音乐',u'性别']].groupby(u'性别').sum()
#数学>80和化学大于60
df_score[(df_score[u'数学'] > 80 ) | (df_score[u'化学']> 60)]
#是妖魔化lambda,配合apply方法将日期中的年份提取出来
#apply函数会将lambd一次作用到数据集的每个元素

dates = pd.Series(['20190901','20190902','20190903'])
dates.apply(lambda x:x[0:4])

df_score['avg'] = df_score['avg'].astype('int')
df_score['avg'] = df_score['avg'].apply(lambda x :int(x))
#计算数学列的综合,等
df_score[u'数学'].agg(['sum','mean','max','std'])
#讲pandas类型转化为numpy类型
df_score.loc[:,[u'数学',u'化学']].values
#讲空数据补位0护着自定义
df_score.fillna(0)
#将缺失数据移除
df_score.dropna()
相关标签: pandas