pandas分析csv数据pandas使⽤总结
参考⽂献
[1]
1.pandas基础
导⼊函数库
import numpy as np
import pandas as pd
1.1 ⽣成对象
1.1.1 ⽣成Series
Series是带标签(索引)的数组,可存储整数、浮点数、字符串、Python对象。
⽣成函数:
s = pd.Series(data,index = index)
默认index从0开始递增
data:字典,多维数组,标量
1.1.1.1 使⽤list / 元组⽣成
s = pd.Series([1,2,3,4])
#或 s = pd.Series((1,2,3,4))
print(s)
out[]:
01
12
23
34
dtype: int64
1.1.1.2 索引
⽣成⽇期索引:
dates = pd.date_range('20130101',periods=6)
list循环
list 使⽤index进⾏循环
for index in range(len(list)):
XXX
传递list
def get_file_list(src1=None,src2=None)
for i in range(len(src1)):
path1 = src1[i]
path2 = src2[i]
with open(path1,'r')as f1,open(path2,'r')as f2:
df1 = pd.read_csv(f1)
df2 = pd.read_csv(f2)
print(df1.info)
print(df2.info)
DataFrame使⽤index循环
for i in df.index:
print(df.iloc[i,'column_name'])
打印完成度
for k,i in enumerate(df.index):
if k %1000==0:
print('运算进度: %s %% [%d/%d]'%(str(k / n),k+1,n),end='\r')
返回DataFrame的⾏数和列数
返回列数
df.shape[1]
返回列名
1.[column for column in df]
lumns.values 返回 array
3.list(df)
lumns 返回Index,可以通过 tolist(), 或者 list(array) 转换为list
返回⾏数
df.shape[0]
或
len(df)
指定删除DataFrame中的某⼀⾏ / 多⾏
exmination_data=exmination_data.drop(index=exmination_data[exmination_data['CardNo'].isin(patient_CardNo_list)].index) exmination_data=exmination_data.drop(exmination_data[exmination_data['CardNo'].isin(patient_CardNo_list)].index)
去重
整⾏去重
df = df.drop_duplicates()
由某⼀ / ⼏ 列去重
df = df.drop_duplicates('A')# 单列
df = df.drop_duplicates(['A','B'])#多列
指定列的值类型
d1[['p_date']]= d1[['p_date']].astype(float)
获取列唯⼀值
df["A"].unique()
单独获取⼏列数据
chunk = chunk[['CureNo','CardNo','RegTime','年龄']]
更改列名
pandas object类型
参考:
[1]
pandas Dataframe中str以object类型进⾏存储,
dataframe中的 object 类型来⾃于 Numpy, 他描述了每⼀个元素 在 ndarray 中的类型 (也就是Object类型)。⽽每⼀个元素在ndarray 中 必须⽤同样⼤⼩的字节长度。 ⽐如 int64 float64, 他们的长度都是固定的 8 字节。
str的长度不固定,因此pandas 储存string时 使⽤ narray, 每⼀个object 是⼀个指针
1 pandas 处理⼤数据的技巧
1.1 分块读取
import pandas as pd
data_path = r'C:\Users\bucho\database\csvdata'
file_name = r'2019.csv'
csv_path = os.path.join(data_path,file_name)
def read_data(file_name):
'''
file_name:⽂件地址
'''
inputfile =open(file_name,'rb')#可打开含有中⽂的地址
data = pd.read_csv(inputfile, iterator=True)
loop =True
chunkSize =1000000#⼀百万⾏⼀块
chunks =[]
while loop:
try:
chunk = _chunk(chunkSize)
chunks.append(chunk)
except StopIteration:
loop =False
print("Iteration is stopped.")
data = pd.concat(chunks, ignore_index=True)
#print(train.head())
return data
df = read_data(csv_path)
import numpy as np
python怎么读csv数据import pandas as pd
import os
import sys
data_path = r'C:\Users\bucho\database\csvdata'
file_name = r'2019.csv'
csv_path = os.path.join(data_path,file_name)
inputfile =open(csv_path,'rb')
data = pd.read_csv(inputfile,iterator=True,chunksize=100000)
chunk = _chunk()
chunk2 = _chunk()
#每⼀次get_chunk()都会重新获取新的数据
#chunk的范围是0-9999
#chunk2的范围是10000-19999
python 类型转换
int 转 str
a =10
s =str(a)
# s = '10'
str 转 int
s ='10'
a =int(s)
# a = 10
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论