数据分析第三天

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()

猜你喜欢

转载自blog.csdn.net/qq_43004728/article/details/83830589