读取excel文件:df = pd.read_excel('地址')
展示前五行:df.head()
行操作:
取出:df.iloc[0],df.iloc[0:5]
# iloc[start,end] 从start取到end-1
df.loc[0:5]
# iloc[start,end] 从start取到end
df.tail()是从末尾读取数据,不填写数字,默认读取最后五条
添加一行:dataframe的本质仍是键值对,向里面添加一行可以通过创建字典,再添加进去
dic={} //其中不能缺少元素
s = pd.Series(dic)
s.name = 38730 //必须设置行标签,不然加入不进去 //为什么不是index?????????
df1 = df.append(s)
删除行元素:
df1 = df1.drop(38730) //其中填写行标签
# 删除后可以通过df.tail()检验是否成功删除
列操作:
删除列
法一:del df['Unnamed: 0']
# 建议列标复制,避免出错
法二:df = df.drop('Unnamed: 0',axis=1) //尝试axis = 1是不是删除行!!!!!!!!
查看前五行电影的名字:df[['名字','类型']][:5]
添加一列:
df1['序号'] = range(1,len(df1)+1 )
通过标签选择数据:df.loc[index][column1]
df1.loc[[1,2,3],['名字','首映地点']]
条件选择数据://记得加括号!!!
df[df['产地']=='美国']
df[((df['产地']=='美国')|(df['产地']=='中国大陆'))&(df['评分']>9)]
# 去重
df1.drop_duplicates(inplace = True) //inplace ???????????????
#缺失值处理
df[df['评分'].isnull()]
#填充缺失值
df['评分'].fillna(np.mean(df['评分']),inplace=True)
# 删除有缺失值的行
df = df.dropna()
# 异常值处理
df.drop(df[df['评分']>10].index,inplace = True)
# 当删除一行后,记得重置索引!!!
df.index = range(len(df))
存储数据
df.to_excel('地址',index=False)
index=False的意思是不存储索引
总结:
对数据进行初步处理的时候,
先去重,然后诊断缺失值,填充缺失值,数值类型的可以用平均值填充;
然后诊断异常值,删除异常值
对行或者列进行按需操作
直方图:
import numpy as np
import matplotlib.pyplot as plt
plt.hist(x,bins=10,color='r') // bins表示分成几个长方体
条形图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' //解决中文问题
plt.title(' ')
plt.xlabel(' ')
plt.ylabel(' ')
# 给列标签加上数值
for a,b in zip(x,y):
# 第一个参数:x轴的位置,第二个参数:y轴的位置,第三个参数:显示的内容
plt.text(a,b,b,ha='center',va='bottom',fontsize=12)
# 画图
plt.bar(x,y,width=0.5,color='r',label=' ')
# 显示图例
plt.legend()
plt.show()
折线图:
import numpy as np
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()
散点图:
import numpy as np
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
饼状图:
import matplotlib.pyplot as plt
labels = ['j','i','a']
values = [20,9,1]
plt.pie(x=values,labels = labels,autopct='%.0f%%',shadow = True)
plt.show()
案例一:柱状图
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
df = pd.read_excel('../movie2.xlsx') //读取excel
data = df['产地'].value_counts()
x = data.index
y = data.value
plt.figure(figsize=(5,4)) //设置画布的长和宽
for a,b in zip(x,y):
plt.text(a,b,b,ha='center',va='bottom',fontsize=12)
plt.bar(x,y,label='')
# 调整x轴竖着显示
plt.tick_params(labelsize=10)
plt.xticks(rotation=90)
plt.legend()
plt.show()
案例二:折线图
data = df['年代'].value_counts()
#按照行标签从小到大排列
data = data.sort_index()
x = data.index
y = data.values
plt.plot(x,y,label='',color='')
plt.legend()
plt.show()
案例三:散点图
x = df['时长'][::100]
y = df['评分'][::100]
plt.scatter(x,y,color='')
plt.show()
案例四:直方图
data = df['评分']
plt.hist(data,bins=10,edgecolor='k',alpha=0.5)
plt.show()
案例五:
data = pd.cut(df['时长'],[0,60,90,110,1000]).value_counts()
value = data.values
label = data.index
plt.pie(value,labels = label,autopct='%.2f%%',shadow=True)
plt.legend()
plt.show()
# 数据类型转换
df.info() 显示数据类型
df['年代'] = df['年代'].astype(np.int32)
# 排序
df.sort_values(by='投票人数',ascending=False)
df.sort_values(by=['评分','投票人数'],ascending=True)[0:10]
true是升序,false是降序。默认为升序
# 基本统计分析
df.describe()
#最值
df['投票人数'].max()
df['投票人数'].min()
#均值
df['投票人数'].mean()
#中值
df['投票人数'].median()
#求和
df['投票人数'].sum()
# 相关系数
df[['投票人数','评分']].corr()
#协方差
df[['投票人数','评分']].cov
#一共多少部电影
len(df)
# 影片来自多少国家
df['产地'].unique()
#单改
df['产地'].replace('中国','中国大陆',inpalce=True)
#多改
df['产地'].replace(['中国大陆','中国香港','中国台湾'],['中国','中国','中国'],inplace=True)
#电影来自那些年份
df['年代'].unique()
#每一年的电影数量
df['年代'].value_counts()
df['年代'].value_counts()[0:5]
#分组统计
group = df.groupby(df['年代'])
group.mean()
#计算每年的平均评分
df['评分'].groupby(df['年代']).mean()
# 每一个地区每一年的电影评分平均值
df['评分'].groupby([df['产地'],df['年代']]).mean()
# 离散化处理
df['评分等级'] = pd.cut(df['评分'],[0,3,5,7,9,10],labels=['E', 'D', 'C', 'B', 'A'])
pd.set_option('max_columns',10)
df[df['评分等级']=='E']
数据处理浅学
最新推荐文章于 2024-07-03 10:16:54 发布