#基于Python的数据分析
#1:为什么要进行数据分析
#简答:人工智能、大数据等数据的采集需要数据----数据通过Python分析
# 而来------进行数据的清洗操作-----建立数据模型Model------生成一个目标数据
#-----通过目标数据----预测未来----得到结果

#:2 企业数据存在的形成
#(1):存在于 “文件 ” 例如:excel word csv txt…
# (2):数据库 例如:mysql Oracle DB2 SQLserver…
#:3:数据解析 之 read_table read_excel

(1):在数据分析里面分析读取文本数据用 :

from pandas import read_table
 read_table —也可以快速的读取大数据、海量数据、

人工智能的数据集

from pandas import read_excel
 read_excel----是指定读取excel类型的数据

传统的大数据开发就是在excel里面进行数据分析,所excel
方法可以处理大数据库~
(2):在以上2个方法里面。可以通过names属性给列起名称,方便数据的读取!
通过sep分隔数据!
(3):导入csv文件类型

i:处理数据的编码格式的方法
通过EditsPlus 或者 UE开发工具可以进行编码的切换!—开发天天使用。
思考?老师可以利用代码转码,----提问?如果有1000万 10亿条数据呢?
对于大数据的数据集不能利用转码的代码机制去直接转码,这样导致服务器、
数据等发生异常情况!----建议使用第三方工具直接操作数据集—面试问!
ii:
from pandas import read_csv
导入csv的文件需要通过 read_csv
思考?csv 和 word excel wps、txt等哪个处理数据集更好?
#CSv自身可以处理编码问题

pd8=read_csv(‘d:/pythondata01/1.csv’,encoding=‘utf-8’)

#总结: read_table /excel/csv 等,全部返回值是DataFrame类型
#:导包的/导模块的区别
from pandas import DataFrame#建议用什么module导入什么模块即可!
import pandas as pd#导入的是pnadas里面的所有module,Python解析器解析速度慢,在工作里面编码规范不要求这样大量写

iii: #导出数据

df.to_csv(‘d:/pythondata01/hello.csv’)


#思考?此代码除了将数据导出之外,还有什么特性?to_csv可以自动创建文件
还有什么特性?

df.to_csv(‘d:/pythondata01/mysql.csv’)

备注:to_csv 不仅仅可以自动创建数据文件,也可以将手动创建的文件,通过数据存放到文件里面!
建议大量使用!安全、数据维护简单!
(4):

df.to_csv('d:/pythondata01/hello.txt') #导出txt
#导出数据
df.to_csv('d:/pythondata01/hello.xls') #导出xls
df.to_csv('d:/pythondata01/hello.xlsx') #导出xlsx
#注意:(01)导出文件的格式不受限制,可以通过to_csv进行导出 不同文件类型!~~
      #(02)通过csv可以导出任意类型的文件。所以csv分析数据首选!

(5): #除去重复数据

df10=pd.read_csv('d:/pythondata01/data.csv')
newdfdata=df10.drop_duplicates()#此方法可以除去重复数据
print('新数据:',newdfdata)

(6):数据抽取 通过slice方法 ,但是数据抽取之前必须将数据转化为str
通过astype(str)-通过index抽取、----数据在列表里面
df11=read_csv(‘d:/pythondata01/datap.csv’)
#df[‘tel’] = df[‘tel’].astype(str);
#astype(str)表示的将数据转化为字符串 ----电话号码、身份证等都是字符串组成,而不是整数
#结果:还是需要将一个完整的数据进行拼接----拼接—自然是字符串操作!

df11['tel']=df11['tel'].astype(str)
#运营商
yys = df11['tel'].str.slice(0, 3);
#地区
areas = df11['tel'].str.slice(3, 7);
#号码段
nums = df11['tel'].str.slice(7, 11);

(7):数据字段拆分

#newDF = df['name'].str.split(' ', 1, True);
#参数说明  :df['name']指的是拆分哪个列名称     str.slpit表示按照字符串拆分
       # 所有的拆分都是按照字符串,  (' ' 1,True) #1表示列数量  True=DataFrame 
       False =返回值是Series  ----根据情况而定
newdf12=df12['name'].str.split(' ',2,True)  ---DataFrame 
newdf13=df12['name'].str.split(' ',2,False)   ---返回值Series     
总结:newdf12=df12['name'].str.split(' ',2,True)  --数据的拆分可读性较差
newdf13=df12['name'].str.split(' ',2,False) --数据拆分以后的可读性很好!

(8)
#筛选数据集里面的“具体数据名称” 如下代码:str.contains(‘台电’, na=False)

df13[df13.title.str.contains('台电', na=False)]

#支持Python的所有科学/算术运算符
df[(df.comments>=1000) & (df.comments<=10000)]
df[(df.comments<=1000) & (df.comments>=10000)]
df[(df.comments/000) & (df.comments<=10000)]


df14 = read_csv('d:/data.csv');
r=np.random.randint(0,100,4)
#例如:3大运营商   银行   很多项目利用这个功能

#聊天  ix  loc  --按照切片思想操作
#r.loc[r,:];
df14=np.loc[r,:]
df14=np.ix[r,:]  #  随机获取   (0,100),没有具体的行数。直到数据全部加载完即可


print(df)
print(df15)

(9)#数据合并 -----通过关键字 concat

df = pandas.concat([df1, df2, df3])

df15=read_csv('d:/hb/data1.csv')#data1表示的是一个数据文件
df16=read_csv('d:/hb/data2.csv')
df17=read_csv('d:/hb/data3.csv')

#数据合并
df18=pandas.concat(['data1.csv','data2.csv','data3.csv'])#表示data1是一个列表的元素
df18=pandas.concat([df15,df16,df17])
df18=pd.concat([df15,df16,df17])

#总结:其实数据的合并就是将所有数据存放到一个列表/集合框架里面。去操作数据
数据合并的核心思想 :将大数据划分为小元素—小元素划分为值

from pandas import read_table
import numpy as np
import pandas as pd    
from pandas import read_excel
from pandas import read_csv
from pandas import DataFrame
import pandas as pd
pd1=read_table('d:/pythondata01/2.txt')
#可以改动列名称 通过 names属性
pd2=read_table('d:/pythondata01/2.txt',names=['age','name'],sep=',')
pd3=read_table('d:/pythondata01/2.txt',names=['年龄','姓名'],sep=',')

pd4=read_table('d:/pythondata01/1.csv')#csv数据可以读取吗?
pd5=read_excel('d:/pythondata01/3.xls')#不行报错误utf-8' codec can't decode byte 0xd0 in position 0: invalid
pd6=read_excel('d:/pythondata01/3.xlsx')
pd7=read_csv('d:/pythondata01/1.csv')
#CSv自身可以处理编码问题
pd8=read_csv('d:/pythondata01/1.csv',encoding='utf-8')

#导入csv文件类型
#导出文件
#创建一个;列表数据 ,将列表数据导出文本类型、csv类型 、excel等类型.....
df=DataFrame({
     'name':['赵雅芝','许仙','法海','金莲','西门庆'],
     'age':[120,12,34,34,55]
     
     })
print('df的数据是:',df)
#导出数据
df.to_csv('d:/pythondata01/hello.csv')     
#思考?此代码除了将数据导出之外,还有什么特性?to_csv可以自动创建文件
       还有什么特性?   
df.to_csv('d:/pythondata01/mysql.csv',index=True)  

#导出数据
df.to_csv('d:/pythondata01/hello.txt') #导出txt
#导出数据
df.to_csv('d:/pythondata01/hello.xls',index=False) #导出xls
df.to_csv('d:/pythondata01/hello.docx') #导出xlsx
#除去重复数据
df10=pd.read_csv('d:/pythondata01/data.csv')
newdfdata=df10.drop_duplicates()#此方法可以除去重复数据  没有参数
print('新数据:',newdfdata)#  
#处理数据的空格   ---一个空格=一个字符  ---2个字符--一个汉字  
  #假设:10000万条数据里面 。每一行有一个空格,计算:
  

df01=DataFrame({
     'name':['赵雅 芝','许 仙',' 法海','金 莲','西门 庆'],
     'age':[120,12,34,34,55]
     
     })

df10=pd.read_csv('d:/data01.csv')
newName = df10['name'].str.strip();  #.str表示的是将数据转化为字符串在去去除空格!
print(newName)
# 取消str.strip() 字符串2遍的空格 !  为什么取消2遍空格?
 .........   '刘 ..德华'---分析解析数据    ....... ‘....  刘德华’
 #备注:.........   120 '刘 ..德华'---分析解析数据  读取2此以上的空格
   #....... ‘....  刘德华  读取一次空格
 
#数据截取
df11=read_csv('d:/pythondata01/datap.csv')
#df['tel'] = df['tel'].astype(str);
#astype(str)表示的将数据转化为字符串   ----电话号码、身份证等都是字符串组成,而不是整数
  #结果:还是需要将一个完整的数据进行拼接----拼接---自然是字符串操作!

df11['tel']=df11['tel'].astype(str)
#运营商
yys = df11['tel'].str.slice(0, 3);
#地区
areas = df11['tel'].str.slice(3, 7);
#号码段
nums = df11['tel'].str.slice(7, 11);


#:启发  假设大家  连接mysql  oracle  操作?
 下午
from pandas import Series;
from pandas import DataFrame;
from pandas import read_csv;
import pandas as pd
import numpy as np
import pandas 

df12 = read_csv('d:/data.csv');
#newDF = df['name'].str.split(' ', 1, True);
#参数说明  :df['name']指的是拆分哪个列名称     str.slpit表示按照字符串拆分
       # 所有的拆分都是按照字符串,  (' ' 1,True) #1表示列数量  True=DataFrame 
       False =返回值是Series  ----根据情况而定
newdf12=df12['name'].str.split(' ',2,True)   
newdf13=df12['name'].str.split(' ',2,False)        
       
#数据的抽取操作 ---其实就是对数据进行  + -  等运算。新添加了几个函数:
   例如:between....and  .....   or   and  ....
   
df13 = read_csv('d:/data.csv');
df13[df13.comments.between(1000, 10000)]  

df13[pandas.isnull(df.title)]  #此代码isnull空值不能有
df13[pd.isnull(df.title)]
#筛选数据集里面的“具体数据名称”  如下代码:str.contains('台电', na=False)
df13[df13.title.str.contains('台电', na=False)]

#支持Python的所有科学/算术运算符
df[(df.comments>=1000) & (df.comments<=10000)]
df[(df.comments<=1000) & (df.comments>=10000)]
df[(df.comments/000) & (df.comments<=10000)]


df14 = read_csv('d:/data.csv');
r=np.random.randint(0,100,4)
#例如:3大运营商   银行   很多项目利用这个功能

#聊天  ix  loc  --按照切片思想操作
#r.loc[r,:];
df14=np.loc[r,:]
df14=np.ix[r,:]  #  随机获取   (0,100),没有具体的行数。直到数据全部加载完即可


print(df)
print(df15)

#数据合并  -----通过关键字 concat
df = pandas.concat([df1, df2, df3])

df15=read_csv('d:/hb/data1.csv')#data1表示的是一个数据文件
df16=read_csv('d:/hb/data2.csv')
df17=read_csv('d:/hb/data3.csv')

#数据合并
df18=pandas.concat(['data1.csv','data2.csv','data3.csv'])#表示data1是一个列表的元素
df18=pandas.concat([df15,df16,df17])
df18=pd.concat([df15,df16,df17])

#总结:其实数据的合并就是将所有数据存放到一个列表/集合框架里面。去操作数据
数据合并的核心思想 :将大数据划分为小元素—小元素划分为值