In the current world, there is a need to analyze and extract information from data. Clustering is one such analytical method which involves the distribution of data into groups of identical objects. Every group is known as a cluster, which consists of objects that have affinity within the cluster and disparity with the objects in other groups. This paper is intended to examine and evaluate various data clustering algorithms. The two major categories of clustering approaches are partition and hierarchical clustering. The algorithms which are dealt here are: k-means clustering algorithm, hierarchical clustering algorithm, density based clustering algorithm, self-organizing map algorithm, and expectation maximization clustering algorithm. All the mentioned algorithms are explained and analyzed based on the factors like the size of the dataset, type of the data set, number of clusters created, quality, accuracy and performance. This paper also provides the information about the tools which are used to implement the clustering approaches. The purpose of discussing the various software/tools is to make the beginners and new researchers to understand the working, which will help them to come up with new product and approaches for the improvement.